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”?Odpowiedzi:
GolfScript, 13 bajtów
Dane wyjściowe to
który generuje program początkowy.
Liczba bajtów obejmuje końcowy LF, ponieważ dane wyjściowe będą go zawierały.
Wypróbuj online.
Jak to działa
GolfScript drukuje zawartość stosu po zakończeniu.
źródło
Programs A and B may not use any of the same characters, save for whitespace and statement separators, and punctuation characters.
1
i2
to znaki interpunkcyjne.Pascal (731 znaków)
Program A:
Program wyjściowy B:
Program wyjściowy A.
źródło
ROT13 ( już nie konkuruje po aktualizacji reguły )
Nie jestem pewien, czy liczy się to jako język, ale z pewnością nie nadrobiłem tego wyzwania. Zazwyczaj odpowiedzi na niektóre narzędzia, takie jak
sed
są również akceptowane. Jest to jednak wyrok osądu, więc jeśli się nie liczy, usunę go (czy jest gdzieś meta dyskusja na temat tego, co liczy się jako język? Edytuj: Teraz jest )Cykle między
A
iN
:źródło
STDIN
, a nie wykonuje programu. Jeśli argumentujesz, że jest to program o zerowej długości, nie spełnia reguły 2. Program (zsed
) jest przekazywanysed -e
. Gdyby to było do zaakceptowania,cat
byłby to quine, itac
byłby quine i antyk. Jednak nic nie produkuje źródła docat
,tac
czy o to chodzirot13
.rot13
ponieważ język programowania nie wydaje się spełniać żadnej rozsądnej definicji „języka programowania” i niczego nie interpretuje. Poprawię to pytanie, aby było jaśniejsze.