7 , 10 byte, 27 ký tự
115160723426754314105574033
Hãy thử trực tuyến!
Đại diện đóng gói của chương trình này trên đĩa là ( xxd
định dạng):
00000000: 269c 3a71 6f63 308b 7c0d &.:qoc0.|.
Giải trình
Chúng ta đã thấy dãy số này trước đây, trong Tự động cứu thế giới , đó là về việc in các số theo định kỳ, làm cho nó thú vị thông qua việc yêu cầu sử dụng một ngôn ngữ rất cũ. Mặc dù vậy, nhiều ngôn ngữ mới hơn có thể có các vòng xoắn riêng khiến thử thách này trở nên thú vị.(Vâng, đoạn này, và trên thực tế lý do tôi bắt đầu viết câu trả lời này, thực sự chỉ là một cách để có được tất cả các thử thách liên quan để hiển thị cùng nhau trong thanh bên; thông thường mọi người sử dụng nhận xét nhưng tôi không có đủ đại diện .)
Điều đầu tiên cần lưu ý là 7 được tạo hoàn toàn bằng các chữ số, do đó, phần thưởng ở đây khó có thể hoạt động (mặc dù nếu bạn xem chương trình như một chuỗi các octet, thì không có phần nào tương ứng với các đại diện ASCII của bất kỳ số nào trong số ban đầu , vì vậy bạn có thể yêu cầu tiền thưởng theo nghĩa đó). Điều tiếp theo cần lưu ý là 7 có các lệnh để tạo lại chuỗi lệnh có khả năng đã tạo ra một phần dữ liệu cụ thể; vì vậy chúng ta có thể giải thích các số bị mất4815162342
là một phần của chính chương trình 7 không?
Câu trả lời là "không hoàn toàn". Phần có vấn đề nhất là số thứ hai,8
. 7 chương trình được viết bằng bát phân; không có số nào là 8. Vì vậy, phần đầu của chuỗi sẽ phải được in khác nhau.
Do đó, cơ sở của chương trình dựa trên chương trình 7 "Hello world":
5431410557403
543141055 string literal
7 separate data from code
4 rearrange stack: {program's source}, empty element, {literal}
0 escape {the literal}, appending it to {the empty element}
3 output {the escaped literal}, pop {the program's source}
với nghĩa đen đã thoát trong một ngôn ngữ dành riêng cho tên miền được diễn giải như sau:
5 output format: US-TTY using pairs of digits in the string
43 select character set: digits and common symbols
14 "4"
10 "8"
55 forget the set output format
Sau này xuất hiện thêm 3
, xuất ra phần tử ngăn xếp còn lại (và thoát do không đủ ngăn xếp còn lại). Phần tử đó được chỉ định khi bắt đầu chương trình và để tránh trường hợp không khớp 6
(hoạt động hơi giống với khung đóng), chúng tôi tạo nó bằng mã, thay vì viết trực tiếp dưới dạng dữ liệu. (Lưu ý rằng có hai 7
ký tự ngụ ý khi bắt đầu chương trình, có liên quan ở đây):
{77}115160723426
7 empty stack element
7 11516 append "1151"
0 append "6"
723246 append "2324"
Điều đó tạo ra nghĩa đen sau đây:
115162324
1 set output format: literally as octal
15162324 "15162324"
được in ra.