Программа А :
"iQ ²¯24
G²õ@i'#+Xd"iQ ²¯24
G²õ@i'#+Xd
Программа B имеет длину более 8 КБ, такую длинную, что разрывается ссылка, поэтому я не буду вставлять все это. Вот пример:
#þ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#ÿ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#Ā"iQ ²¯24
G²õ@i'#+Xd"iQ ²
Я не смог найти способ заставить NUL
работать байт, поэтому в программе B всего 255 уникальных символов. Программа B, по существу, состоит из 255 копий одной программы, где каждый раз изменяется один нерелевантный байт, а первые 254 выполнения игнорируются.
Для пояснения я начну с этой упрощенной версии A, чтобы результирующий B был легче обсуждать.
"iQ ²¯23
3õ@i'#+Xd"iQ ²¯23
3õ@i'#+Xd
Эта программа основана на базовых способностях Japt с поддержкой полезной нагрузки . Строка в начале содержит дубликат остальной части программы, iQ ²
вставляет кавычки и дубликаты, чтобы создать строковое представление всей программы, а затем ¯23
обрезает себя и все после нее. Результирующая строка является программой, которая выводит Программу A :
"iQ ²¯23
3õ@i'#+Xd"iQ ²
Я буду ссылаться на эту строку как U
.
Последняя строка A дублирует U
множество раз с небольшими изменениями каждый раз. В частности, для каждого числа X
в диапазоне [1...3]
он выводит "#c" + U
где c
символ с кодом X
. Поведение Japt по умолчанию состоит в том, чтобы выводить эти строки без кавычек и разделять их запятыми, поэтому это вывод нашего упрощенного A (обратите внимание, что между каждым #
и "iQ
: есть непечатаемый байт :
#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²
Мы будем называть этот УСНО B .
Упрощенный B имеет простую структуру, чередуя между #c
и U
. К счастью для этого ответа, каждый #c
и U
рассматривается как разделенный запятой, и в этой ситуации поведение всего этого, кроме самого последнего U
, не влияет на вывод. Единственная часть Simplified B, которая влияет на вывод, это:
"iQ ²¯23
3õ@i'#+Xd"iQ ²
Что идентично тому, U
что мы уже знаем, выходы упрощены А.
Единственное отличие между Упрощенной A и Программой A состоит в том, что вместо генерации копий для диапазона [1...3]
настоящая программа генерирует копии для диапазона [1...256]
. Это приводит к 256 версиям, #c
каждая из которых имеет свой символ, хотя последняя версия «is» является многобайтовым символом, поэтому она не добавляет уникальных байтов, но все, кроме последнего, U
по-прежнему игнорируется.