To wyzwanie jest podobne do Can You Meta Quine?
Quine to program, który produkuje się na STDOUT. Wyzwanie polega na utworzeniu programu A, który po uruchomieniu tworzy program B na STDOUT. Program B po uruchomieniu tworzy program A na STDOUT. Programy A i B muszą być napisane w tym samym języku (i działać w tym samym języku). Połączone pytanie ograniczało A! = B. To wyglądało zbyt łatwo. Dlatego w tym pytaniu nalegamy, aby A i B były antykami, stosując następujące reguły:
- Programy A i B nie mogą używać tych samych znaków, z wyjątkiem białych znaków i separatorów instrukcji oraz znaków interpunkcyjnych.
- Programy A i B muszą zawierać co najmniej jeden znak, który nie jest ani białą spacją, ani separatorem instrukcji, ani znakiem interpunkcyjnym.
- Do celów reguł 1 i 2 termin „biała spacja” wyklucza dowolny symbol lub sekwencję symboli, który sam jest interpretowanym wyrażeniem, operatorem lub symbolem (w przeciwieństwie do separatora). Dlatego w języku białych znaków nie ma białych znaków.
- Separator instrukcji to element składniowy konwencjonalnie używany w języku do rozdzielania instrukcji. Obejmuje to nowy wiersz w pythonie lub średnik w Javie, perl lub C.
- Znak interpunkcyjny to znak ASCII, który nie jest ani białą spacją, ani klasą wyrazów POSIX (tzn. Podkreślenie nie jest w tym celu interpunkcją) - tzn.
ispunct()
Zwróci prawdę, a nie będzie_
. - Program A po uruchomieniu musi wytworzyć program (Program B) na swoim STDOUT, który po uruchomieniu tworzy Program A.
- Programy A i B muszą być w tym samym języku programowania.
- Używany język programowania musi być faktycznie językiem programowania. Chyba że zrobisz dobry przypadek, sugeruję, że Turing musi być kompletny.
- Co najmniej jedna z liter A i B musi wykonać co najmniej jedną instrukcję w języku.
Jest to kod golfowy, więc wygrywa najkrótsza odpowiedź, a wynik to długość programu A w bajtach (tzn. Długość programu B nie ma znaczenia).
A
i są a
uważane za różne „postacie”?