Một chuỗi phản đối là một số loại dữ liệu thử nghiệm tự mô tả được sử dụng trong kiểm tra phần mềm. Không chắc nó thực sự được phát minh bởi James Bach , nhưng tôi biết nó từ đó.
Ý tưởng như sau: dữ liệu thử nghiệm chứa nhiều dấu hoa thị ( *
). Số ở phía trước dấu hoa thị cho bạn biết thời gian kiểm tra dữ liệu tại thời điểm đó. Nếu bạn cần biết một vị trí trong dữ liệu thử nghiệm không phải là dấu hoa thị, hãy tìm dấu hoa thị cuối cùng, nhìn vào số trước đó và thêm số chữ số theo sau.
Trình tự bắt đầu như thế này:
2*4*6*8*11*14*17*20*23*
^
Như bạn có thể thấy, dấu hoa thị được đánh dấu nằm ở vị trí 14.
Nếu một tập tin xảy ra bị cắt ngắn như sau
[...]2045*20
sau đó bạn có thể rút ra rằng có giới hạn 2047 ký tự ở đâu đó (2045 trong đó dấu hoa thị cộng với 2 cho 2
và 0
).
Nhiệm vụ của bạn là tạo ra chương trình ngắn nhất (đây là code-golf ) tạo ra (std :: out hoặc file hoặc bất cứ thứ gì) một chuỗi thử nghiệm dài tùy ý có định dạng đó. Độ dài trong các ký tự được đưa ra làm đối số. Chương trình sẽ hỗ trợ tối đa 2 GB dữ liệu thử nghiệm (giá trị đầu vào 2147483647 ký tự).
Vị trí "nguy hiểm" trong tệp 2 GB:
8*11*
98*102*
998*1003*
9998*10004*
99998*100005*
999995*1000003*
9999995*10000004*
99999995*100000005*
999999995*1000000006*
Điều này sẽ trả lời câu hỏi của @Leaky Nun nếu có quyết định đưa ra từ 995 * 999 * đến 995 * 1000 * hoặc tương tự: không.
Phần cuối của tệp 2 GB có giá trị đầu vào 2147483647 là:
2147483640*2147483
995*999*
và 995*1000*
bất cứ điều gì như vậy không?