Metaquine to program, który nie jest quine, ale którego wyjście, gdy działa jako program w tym samym języku, jest quine.
Celem tego wyzwania jest napisanie metaquine. To jest golf golfowy , więc wygrywa najkrótszy kod, a najwcześniejsza odpowiedź jest używana jako remis. Należy pamiętać, że ze względu na definicję quine dopuszczalne są tylko pełne programy.
Zasady dotyczące Quines
Akceptowane są tylko prawdziwe quines. Oznacza to, że musisz wydrukować cały kod źródłowy dosłownie do STDOUT, bez :
- czytanie kodu źródłowego, bezpośrednio lub pośrednio.
- polegając na środowisku REPL, które po prostu ocenia i drukuje każde podane wyrażenie.
- polegając na funkcjach językowych, które w niektórych przypadkach drukują tylko źródło.
- za pomocą komunikatów o błędach lub STDERR, aby napisać całość lub część quine. (Możesz pisać różne rzeczy do STDERR lub generować ostrzeżenia / niekrytyczne błędy, o ile STDOUT jest poprawnym quine, a komunikaty o błędach nie są jego częścią.)
- kod źródłowy składający się wyłącznie z literałów (niezależnie od tego, czy są to literały łańcuchowe, literały liczbowe itp.) i / lub NOP.
Wszelkie dane wyjściowe, których nie można ukryć (takie jak powiadomienia o prawach autorskich, komunikaty o uruchamianiu / zamykaniu lub końcowe podawanie wiersza) mogą być ignorowane w danych wyjściowych ze względu na ważność quine.
Przykład
Ignorując regułę zabraniającą programom dosłownym i wbudowane quining, byłby to metaquine w Seriously:
"Q"
Program składa się z pojedynczego literału łańcuchowego "Q"
, który jest domyślnie drukowany na wyjściu. Po uruchomieniu output ( Q
) jest to quine ( Q
jest to wbudowana funkcja quine).
T
jest łatwą 1-bajtową odpowiedzią na Pyth.Odpowiedzi:
CJam, 6 bajtów
Wydruki
który jest najkrótszym właściwym quine w CJam.
Sprawdź to tutaj.
Wyjaśnienie
Oba programy działają dokładnie tak samo, ponieważ podawanie wiersza w odpowiednim quine nie działa i jest uwzględniane tylko dlatego, że usunięcie go z wyjścia jest droższe. Jak działają programy:
Dygresja
To samo działa w GolfScript jak
który drukuje
z tylnym podawaniem linii, co z kolei jest jednym z najkrótszych znanych quines.
źródło
Pyth,
1211109 bajtówZnalazłem jeszcze jeden bajt dzięki @ Pietu1998.
To drukuje
który jest quine w Pyth. Możesz to wypróbować tutaj .
źródło
jN B".[9N
lub.[9N"jN B
. (jN B"jN B
to kolejna prawdziwa quine o 9: funkcja tożsamości bifurcate i dołącz"
.)Rozszczepienie , 6 bajtów
Wydruki
Która jest najkrótszą quine rozszczepienia . Działa to, ponieważ cykliczne przesunięcia programu pozostawiają całkowicie nienaruszony wynik.
Wypróbuj online!
źródło
JavaScript ES6, 21 bajtów
Trywialny.
źródło
Python 2, 29 bajtów
Okazuje się, że dobrze znany krótki quin pythonowy łatwo przekształca się w metaquine :)
A ponieważ nie musimy się martwić o dopasowanie nowej linii, metakina jest w rzeczywistości krótsza!
źródło
Japt,
1513 bajtówPrzetestuj online!
Ten program generuje dane
która jest najkrótszą znaną quine w Japt.
Jak to działa
Wersja niekonkurencyjna, 11 bajtów
Ja po prostu dodał
é
, polecenie „Rotate”. Więcjest teraz prawidłowym quine.
źródło
Ruby,
2523 latGeneruje klasyczną wersję Ruby HEREdoc
Stare rozwiązanie
Generuje się z wyjątkiem pojedynczych cudzysłowów zastąpionych podwójnymi cudzysłowami.
źródło
JavaScript, 50 bajtów
Oparty na najkrótszej znanej człowiekowi Quine JS , ale o 8 bajtów krótszej. Wydruki
który jest quine.
źródło
Ryba (> <>), 17 bajtów
Działa to przy użyciu klasycznej quine ryb,
"r00g!;oooooooo|
ale dodaje,{
która przesuwa cały stos w lewo, dzięki czemu oryginalny program nie jest quine, ale jest wyświetlany po uruchomieniu.Wyjścia:
który jest rybnym quine!
źródło
Galaretka , 3 bajty (niekonkurujące)
Niestety wymagane atomy są około 2 tygodnie młodsze od wyzwania.
Metakina
Wypróbuj online!
Jak to działa
Quine
Wypróbuj online!
Jak to działa
Ponieważ drugi
Ṙ
drukuje pierwsze dwa znaki (”Ṙ
), jest to właściwy quine z naszej definicji.źródło
Octopen-Baru, 22 bajty
** Niekonkurencyjna odpowiedź
Wyjście Ruby
Które wyjścia
見
. Który jest quine w Octopen-Baru!źródło
7 , 2 bajty, wyzwanie dla postdate języka
Program ma dwa bajty i można go interpretować na kilka sposobów; jako zrzut heksowy:
jako strona kodowa 437:
lub, najłatwiej, w formie ósemkowej (z której 7 używa natywnie):
Wypróbuj online!
Działanie tego jest bardzo proste: jest to standardowa 7-cio osobowa z elementem stosu no-op umieszczonym między dwiema połówkami, aby się wyróżnić (w tym kontekście
7
oddziela elementy stosu). (Mógłbym również wstawić go na początku723723
. Nie mogłem go zinterpretować na końcu, ponieważ końcowe 7s są jak końcowe białe znaki i są ignorowane w spakowanym kodowaniu, więc nie różni się niczym od programu wyjściowego. )Nawiasem mówiąc, ten program jest palindromem w systemie szesnastkowym, ale to w większości zbieg okoliczności.
źródło
Niedociążenie, 11 bajtów
Dość proste. Drukuje
(:aSS):aSS
, co jest standardowym quine niedociążenia.źródło
Brachylog , 12 bajtów
Wypróbuj online!
Jedna ze 132 odmian metakiny o tej samej długości na szynie, którą przetłumaczyłem z Brachylog v1 (nie oszukującej) Fatali. Napisałem (nie golfowy i ogólnie głupiutki) program do wydrukowania wszystkich:
Wypróbuj online!
Istnieją dwie części oryginalnego quine, które można zastąpić niekonsekwentnie:
;?
można zmienićgj
lubjḍ
, i₁
mogą być zmieniane do₃
,₅
lub₇
. Jeśli zachowamy lub zmienimy je poza literałem ciągu w jeden sposób, a wewnątrz literału ciągu w inny sposób, wynik nie będzie pasował do źródła, ponieważ którekolwiek warianty występujące w literale ciągu zostaną wydrukowane zarówno wewnątrz, jak i na zewnątrz , czego wynikiem jest quine, która nie była początkowym uruchomieniem programu.;?
,gj
ijḍ
są wymienne, ponieważ wszystkie trzy łączą literał ciąg z samym sobą: ze względu na układ programu zmienna wejściowa?
jest zunifikowana z ciągiem, więc;?
paruje ciąg ze sobą; bez względu na układgj
zawija ciąg w listę, która jest następnie konkatenowana do siebie; podobniejḍ
łączy ciąg do siebie, a następnie dzieli go na pół.Indeksy
w
dolne o nieparzystych numerach są wymienne, ponieważ chociaż pierwotniew
mogło zająć tylko 0 lub 1, przy czym 0 wypisuje dane wejściowe do,w
a 1 drukuje pierwszy element sformatowany za pomocą drugiego, inwentarz indeksu dolnegow
rozwinął się w coś, co zewnętrznie funkcjonuje jako pole bitowe: niski bit indeksu dolnego koduje, czy jest on bezpośredni, czy sformatowany, środkowy bit koduje, czy zmienna wyjściowa zw
jest nieskrępowany lub ustawiony na wejście, a wysoki bit koduje, czy drukowanie jest wykonywane natychmiast, czy opóźnia się do końca programu, aby można go było cofnąć. (Te indeksy dolne były moim pierwszym i jak dotąd największym wkładem w Brachylog.) Ponieważ quine i metaquine nie używają zmiennej wyjściowej i nie cofają się, wszystkie cztery nieparzyste indeksy są równoważne.źródło
Befunge-93, 22 bajty
Właśnie wziąłem standardowy quine, umieściłem go w cudzysłowach, odwróciłem (aby poprawnie załadować go na stos), a następnie dodałem wydruk stosu na końcu.
Jest 8 znaków dodanych do normalnego quine, więc jest bardzo możliwe, że istnieje lepsze rozwiązanie.
źródło
Turtlèd , 52 bajty (niekonkurencyjne)
1 mniej niż oryginalny quine
Działa w ten sam sposób, z tym wyjątkiem, że nie ma znaku na końcu, gdy zostanie uruchomiony, będzie miał znak na końcu, co nie wpłynie na wynik, ponieważ zapisuje # na #. Zauważ, że wynik jest nieco inny niż quine, które stworzyłem dla quine Challenge, ale działa tak samo: „zapisuje #, który jest jego ostatnim znakiem, podobnie jak napisane przeze mnie quine. Sprawdź tam wyjaśnienie .
źródło
Lua, 45 bajtów
Kod Quine nie mój.
spowoduje
który jest quine. Cieszę się, że
;
jest to opcjonalne w Lua.źródło
Pushy , 7 bajtów
Niekonkurencyjny, ponieważ język jest późniejszy niż wyzwanie.
Jest to standardowy quine, ale z usuniętymi znakami nowej linii. Nowe linie nic nie znaczą w Pushy, ale są standardowym separatorem operatora drukowania, a zatem są potrzebne do prawdziwego quine.
Wypróbuj online! To daje:
Która jest najkrótsza Pushy Quine - wyjaśnienie tego, jak to działa, można znaleźć tutaj .
Alternatywnie,
H5-34_"
działa dla tej samej liczby bajtów.źródło
Piana , 14 bajtów
To drukuje drugą piankę Quine, którą można znaleźć tutaj . Jest to w rzeczywistości krótsze, ponieważ
.
zawsze umieszcza spację między każdym elementem, ale pasek w trzecim żetonie pozwala mi pominąć spację przed nim.źródło
Łuska , 6 bajtów
Wypróbuj online!
Drukuje standardowy kadłub Łuski
S+s"S+s"
.Quine wyjaśnił:
źródło