Натхненний гіперпрограмуванням: N + N, N × N, N ^ N все в одному .
Дякуємо @MartinEnder та @trichoplax за допомогу в пісочниці.
Визначення
Гіперкіни
Визначте гіперкіну порядку n як повну програму або функцію P , подібну квінові , яка задовольняє всім правилам, що стосуються належних квінок, і, крім того, має таку структуру.
Р являє собою об'єднання символів ‡ груп, що складаються з п копій одного і того ж символу. Коли 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 , тому вони не утворюють послідовності суміжних цілих чисел.
Правила
Завдання
У мові програмування за вашим вибором, написати нетривіальний hyperquine ланцюг, тобто ланцюг , яка складається , щонайменше , 2 hyperquines.
Як завжди, ваші програми можуть не приймати жодного вводу чи доступу до власного вихідного коду в будь-якій формі.
Якщо ваш перекладач друкує неявну нову лінію, ваші гіперквіни повинні це враховувати.
Застосовуються всі стандартні лазівки, особливо ті, що стосуються королеви.
Оцінка балів
Виграє найдовший ланцюг гіперкінів . Якщо два чи більше подань зв'язані, подання серед них, що починається з найкоротшого гіперквіну (вимірюється символами ‡ ), виграє. Як завжди, час публікації - це остаточний перелом.
‡ Ви повинні використовувати одне й те саме кодування символів для вихідного коду, виводу, кількості символів та виконання. Наприклад, програма Python print 42
- це не двозначне подання UTF-32, оскільки інтерпретатор розглядає кожен байт як один символ. Якщо ваша мова вибору не базується на символах, розглядайте всі байти як символи.