7 , 10 байтов, 27 символов
115160723426754314105574033
Попробуйте онлайн!
Упакованное представление этой программы на диске ( xxd
формат):
00000000: 269c 3a71 6f63 308b 7c0d &.:qoc0.|.
объяснение
Мы видели эту последовательность чисел ранее, в статье «Автоматизация спасения мира» , где речь шла о печати чисел через равные промежутки времени, что делает ее интересной, поскольку требует использования очень старого языка. Тем не менее, гораздо более новые языки могут иметь свои собственные особенности, которые делают этот вызов интересным. (Да, этот абзац, и фактически причина, по которой я начал писать этот ответ, по сути, является просто способом отображения всех связанных проблем вместе на боковой панели; обычно люди делают это с помощью комментариев, но у меня недостаточно представителя .)
Первое, на что следует обратить внимание, это то, что 7 состоит из цифр, поэтому получение бонусов здесь вряд ли сработает (хотя если рассматривать программу как последовательность октетов, ни один из них не соответствует представлениям ASCII любого из исходных чисел , так что вы можете претендовать на бонус в этом смысле). Следующее, что следует отметить, это то, что 7 имеет команды для воссоздания последовательности команд, которая, вероятно, создала определенный фрагмент данных; можно ли интерпретировать потерянные числа 4815162342
как часть самой 7-й программы?
Ответ "не совсем". Самая проблемная часть - это второй номер 8
. 7 программ написаны в восьмеричном виде; такого числа, как 8., нет, поэтому само начало строки должно быть напечатано иначе.
Таким образом, база программы основана на программе "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}
с экранированным литералом в доменном языке, который интерпретируется следующим образом:
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
После этого прибывает дополнительный 3
, который выводит оставшийся элемент стека (и выходит из-за недостаточного оставшегося стека). Этот элемент указывается в начале программы, и чтобы избежать несоответствия 6
(которое работает немного как закрывающая скобка), мы генерируем его, используя код, а не записываем его непосредственно как данные. (Обратите внимание, что 7
в начале программы есть два подразумеваемых символа, которые здесь важны):
{77}115160723426
7 empty stack element
7 11516 append "1151"
0 append "6"
723246 append "2324"
Это производит следующий литерал:
115162324
1 set output format: literally as octal
15162324 "15162324"
который распечатывается.