Inspirowane hiperprogramowaniem: N + N, N × N, N ^ N wszystko w jednym .
Dzięki @MartinEnder i @trichoplax za pomoc w piaskownicy.
Definicje
Hyperquines
Zdefiniuj hiperquinę rzędu n jako pełny program lub funkcję P przypominającą quine, która spełnia wszystkie reguły mające zastosowanie do odpowiednich quines, a ponadto ma następującą strukturę.
P jest konkatenacją znaków ‡ grup składających się z n kopii tego samego znaku. Kiedy P jest wykonywane, wynikiem jest konkatenacja tych samych grup, powiększona o jeszcze jedną kopię znaku.
Przykłady
W hipotetycznym języku programowania, w którym kod źródłowy
aabbccgeneruje dane wyjścioweaaabbbccc, program ten stanowi hiperquinę rzędu 2 .Definicja nie wymaga, aby znaki z różnych grup były różne.
Jeśli kod źródłowy
aabbccgeneruje dane wyjścioweaaaabbbbcccc, program jest hiperquine rzędu 1 ; kod źródłowy składa się z sześciu jednoznakowych grup, a wynik sześciu par znaków.W GS2 pusty program jest drukowany
\n, a program jest\ndrukowany\n\n. Jednak\nani\n\nhiperquiny, ani te nie są, ponieważ nie spełniają one wszystkich właściwości właściwych quines ; żadna część kodu źródłowego nie koduje innej części wyniku.
Łańcuchy Hyperquine
Zdefiniuj hiperquinowy łańcuch długości n jako skończoną sekwencję n pełnych programów lub n funkcji
(P 1 ,…, P n ), która spełnia następujące ograniczenia.
Wyjściami P 1 ,…, P n-1 są odpowiednio P 2 ,…, P n .
P 1 ,…, P n są hiperkwinami.
Rzędy P 1 ,…, P n tworzą ściśle rosnącą sekwencję sąsiednich liczb całkowitych.
Na koniec zdefiniuj nieskończony łańcuch hiperquinowy jako nieskończoną sekwencję pełnych programów lub funkcji (P 1 , P 2 ,…) tak, aby każdy początkowy przedział (P 1 ,…, P n ) stanowił łańcuch hiperquinowy o długości n .
Przykłady
W hipotetycznym języku programowania, w którym kod źródłowy
aabbccgeneruje dane wyjścioweaaabbbccc, które z kolei generują dane wyjścioweaaaabbbbcccc, para (aabbcc,aaabbbccc) stanowi hiperquinowy łańcuch o długości 2 .Zauważ, że
aaaabbbbcccc- wynik ostatniej hiperquiny w łańcuchu - nie musi generować określonego wyniku; nie musi to być nawet poprawny kod źródłowy.Kontynuując poprzedniego przykładu, jeśli
aaaabbbbccccwytwarza sygnał wyjściowyaaaaabbbbbccccc, trójkę (aabbcc,aaabbbccc,aaaabbbbcccc) stanowi łańcuch hyperquine długości 3 .Jeśli ten wzór trwa wiecznie, sekwencja (
aabbcc,aaabbbccc,aaaabbbbcccc, ...) stanowi nieskończony łańcuch hyperquine.Para programów (
abc,aabbcc) z wyjściami (aabbcc,aaaabbbbcccc) nie jest łańcuchem hiperquin, ponieważ oba rzędy hiperquin są równe 1 , więc nie tworzą ściśle rosnącej sekwencji.Para programów (
aabbcc,aaaabbbbcccc) z wyjściami (aaaabbbbcccc,aaaaabbbbbccccc) nie jest łańcuchem hiperquin, ponieważ rzędy hiperquin to 1 i 4 , więc nie tworzą one sekwencji sąsiednich liczb całkowitych.
Zasady
Zadanie
W wybranym języku programowania napisz nietrywialny łańcuch hiperquinowy, tj. Łańcuch składający się z co najmniej 2 hiperkwin.
Jak zwykle, twoje programy nie mogą pobierać żadnych danych wejściowych ani uzyskiwać dostępu do własnego kodu źródłowego w żadnej formie.
Jeśli twój interpreter wypisuje ukrytą nową linię, hiperquiny muszą to uwzględnić.
Obowiązują wszystkie standardowe luki - zwłaszcza te związane z quinesami.
Punktacja
Najdłuższy łańcuch hiperquiny wygrywa. Jeśli dwa lub więcej zgłoszeń jest powiązanych, zgłoszenie spośród tych, które zaczyna się od najkrótszej hiperquiny (mierzonej w znakach ‡ ) wygrywa. Jak zwykle czas publikacji jest ostatecznym rozstrzygnięciem.
‡ Musisz użyć tego samego kodowania znaków dla kodu źródłowego, wyniku, liczby znaków i wykonania. Na przykład, program Python print 42jest nie 2 znaków UTF-32 uległość, ponieważ interpreter traktuje każdy bajt jako pojedynczego znaku. Jeśli wybrany język nie jest oparty na znakach, wszystkie bajty należy traktować jak znaki.