Вдохновленный гиперпрограммированием: N + N, N × N, N ^ N все в одном .
Спасибо @MartinEnder и @trichoplax за их помощь в песочнице.
Определения
Hyperquines
Определите гиперхине порядка n как полную программу или функцию P , аналогичную квине , которая удовлетворяет всем правилам, применимым к правильным квинам, и, кроме того, имеет следующую структуру.
P - объединение групп символов ‡ , состоящих из n копий одного и того же символа. Когда P выполняется, выводом является конкатенация тех же групп, дополненная еще одной копией символа.
Примеры
На гипотетическом языке программирования, где исходный код
aabbcc
генерирует выходные данныеaaabbbccc
, эта программа представляет собой гиперхин порядка 2 .Определение не требует, чтобы символы разных групп были разными.
Если исходный код
aabbcc
генерирует выходные данныеaaaabbbbcccc
, программа является гиперхинейой порядка 1 ; Исходный код состоит из шести односимвольных групп, вывод из шести пар символов.В GS2 пустая программа печатает
\n
, и программа\n
печатает\n\n
. Однако ни гиперхины , ни они\n
не\n\n
являются, так как они не удовлетворяют всем свойствам собственных хининов ; ни одна часть исходного кода не кодирует другую часть вывода.
Гиперквиновые цепи
Определите гиперхиневу цепочку длины n как конечную последовательность из n полных программ или n функций
(P 1 ,…, P n ), которая удовлетворяет следующим ограничениям.
Выходы P 1 ,…, P n-1 равны P 2 ,…, P n соответственно.
P 1 ,…, P n - гиперхины.
Порядки P 1 ,…, P n образуют строго возрастающую последовательность смежных целых чисел.
Наконец, определим бесконечную цепочку гиперхинов как бесконечную последовательность полных программ или функций (P 1 , P 2 ,…), такую, что каждый начальный интервал (P 1 ,…, P n ) составляет цепочку гиперхин длины n .
Примеры
В гипотетическом языке программирования, где исходный код
aabbcc
генерирует выходные данныеaaabbbccc
, которые, в свою очередь, генерируют выходные данныеaaaabbbbcccc
, пара (aabbcc
,aaabbbccc
) образует цепочку гиперхинов длиной 2 .Обратите внимание, что
aaaabbbbcccc
- вывод последней гиперхины в цепочке - не должен производить конкретный вывод; это даже не должен быть действительный исходный код.Продолжая предыдущий пример, если
aaaabbbbcccc
формирует выходной сигналaaaaabbbbbccccc
, триплет (aabbcc
,aaabbbccc
,aaaabbbbcccc
) представляет собой hyperquine цепь длиной 3 .Если эта картина продолжается вечно, последовательность (
aabbcc
,aaabbbccc
,aaaabbbbcccc
...) представляет собой бесконечную цепь hyperquine.Пара программ (
abc
,aabbcc
) с выходами (aabbcc
,aaaabbbbcccc
) не является цепью гиперхина, поскольку порядки гиперхинов обе равны 1 , поэтому они не образуют строго возрастающую последовательность.Пара программ (
aabbcc
,aaaabbbbcccc
) с выходами (aaaabbbbcccc
,aaaaabbbbbccccc
) не является цепью гиперхин, поскольку порядки гиперхинов равны 1 и 4 , поэтому они не образуют последовательность смежных целых чисел.
правила
задача
На выбранном вами языке программирования напишите нетривиальную цепочку гиперхинов, т. Е. Цепочку, состоящую как минимум из двух гиперхинов.
Как обычно, ваши программы не могут вводить данные или получать доступ к своему исходному коду в любой форме.
Если ваш переводчик печатает неявную новую строку, ваши гиперхины должны учитывать это.
Применяются все стандартные лазейки, особенно те, которые связаны с куинами.
счет
Самая длинная цепь гиперхина побеждает. Если два или более представления связаны, то представление среди них, которое начинается с самой короткой гиперхины (измеряется символами ‡ ), выигрывает. Как обычно, время публикации является окончательным тай-брейком.
‡ Вы должны использовать одинаковую кодировку символов для исходного кода, вывода, количества символов и выполнения. Например, программа Python print 42
является не 2-символов UTF-32 представления, так как интерпретатор обрабатывает каждый байт как один символ. Если выбранный вами язык не основан на символах, обрабатывайте все отдельные байты как символы.