Ten 128-językowy quine ouroboros (program, który wypisuje program w innym języku, który wypisuje program w innym języku (125 języków później), który wypisuje oryginalny program) jest imponujący. Ale niestety ma statyczną liczbę iteracji.
Napisz program, który wypisuje program (niekoniecznie w innym języku, ale może być), który wypisuje program, który wypisuje program itp., Który po n iteracjach wypisuje oryginalny program po raz pierwszy (tj. Bez pośredniego program powinien być taki sam jak oryginał, ponieważ w przeciwnym razie działałaby quine, która ignoruje jego wejście), gdzie n jest nieujemną liczbą całkowitą podaną jako wejście. Dane wejściowe nie mogą być tylko liczbą w oryginalnym kodzie źródłowym (np. Umieszczeniem x = <the value of n>
na początku programu), powinna być jedną z następujących czynności:
- Przekazany jako argument wiersza polecenia
- Odczyt ze standardowego wejścia
- Przekazany jako argument funkcji, która zwraca / wyświetla nowy program.
W przypadku etapów pośrednich w naszymoboros, twój program może być albo w pełni funkcjonalnym programem, albo funkcją bez argumentów, która po wywołaniu zwróci / wyśle następny.
Nie możesz czytać z samego pliku źródłowego ani używać żadnych wbudowanych podobnych do quine (nie sądzę, że istnieją takie, które by to zrobiły, ale mogą być)
Dla jasności, jeśli n = 0
program powinien wypisać własny kod źródłowy.
Jeśli n = 1
, program powinien wypisać inny program, który wypisuje oryginalny kod źródłowy.
I tak dalej...
Wygrywa najmniej bajtów!
Edytować:
Powinienem napisać: „Dla etapów pośrednich w naszymoboros, twój program może być albo w pełni funkcjonalnym programem bez danych wejściowych , albo funkcją bez argumentów”. Jeśli twój program wypisuje następny w łańcuchu, a następnie czeka na dane wejściowe, to dobrze, ale twój program nie powinien potrzebować oryginalnej wartości n.
getInput()
użycia czegoś podobnego bez żadnych danych wejściowych. Czy możemy powiedzieć, że wprowadzamy coś losowego, co nie jest wykorzystywane do późniejszych iteracji, aby zapobiec błędom getInput()
? Czy aktualna odpowiedź w języku Python jest poprawna?
n
uzyskanie danych liczbowych z programu, który jest „programem początkowym” naszego zbioru itobacji n
i że nasza odpowiedź nie powinna być liczona jako jedna z n
iteracji. Czy to jest poprawne?