Używając dwóch wybranych języków, napisz najmniejszą możliwą „ wzajemną quinę ”.
Oznacza to, że napisz program P w języku A, który wyprowadza kod źródłowy dla programu Q w języku B, tak aby dane wyjściowe programu Q były identyczne z kodem źródłowym dla P.
Puste pliki się nie liczą, podobnie jak programy „odczytuj plik źródłowy i drukuj go”.
Edycja: odpowiedzi z P = Q już się nie liczą.
1
jest quine w kilku językach. Można więc powiedzieć, że jest to program J, który drukuje program Golfscript, który drukuje ...... i tak dalej.Odpowiedzi:
> <> (Fish) i Python - 26 znaków
Generuje ten Python
źródło
"
i'
umożliwić ciąg parsowania, więc cały program jest po prostu odkładany na stos i nigdy wyświetlana."
umożliwia parsowanie ciągów. Czyta. Cały program, a następnie wraca do. Pierwszy"
i uruchamia program ze sobą na stosieprint \00gr00g:a9*2+$' tnirp'>o<
po przekroczeniu limitu czasu. Jestem prawie pewien, że dzieje się tak, ponieważg
kopiuje rzeczywistą zawartość komórki, aleo
wyświetla wersję znaku"
ASCII i nie jest prawidłowym kodem znaku ASCII. ideone.com/kaM0r"
to ASCII 34. Twój tłumacz musi być wyłączony.Python i Ruby, 39 znaków
Ten fragment kodu w języku Python
generuje ten fragment Rubiego
który następnie generuje początkowy fragment kodu w języku Python:
Zauważ, że jest to podobne do odpowiedzi JB .
źródło
C i Perl, 73
To C:
... wyświetla następujący Perl:
... który zwraca C z powrotem.
źródło
main(s){printf(s="print q<main(s){printf(s=%c%s%1$c,34,s);}>",34,s);}
C i C ++, 123 znaki
To C (kompatybilne z gcc v4.3.4):
wypisuje to (identyczne) C ++ (kompatybilne z g ++ 4.3.4, jedno ostrzeżenie):
Jest to zgodne z opublikowanymi zasadami. : P I, podobnie jak Ventero, jest to oparte na odpowiedzi JB .
źródło
Java na Python - 219
Jawa:
Pyton:
Wykorzystuje fakt, że Python dopuszcza
'
ciągi; znacznie ułatwia to zapisanie źródła programu Java w programie python.źródło
Python + Piet one- liners : 417 znaków +
73917107 wykonujących koderyTen skrypt w języku Python tworzy obraz 7393 x 2; najbardziej wysunięty w prawo blok 2x2 to „wartownik” kończący program; więc ich nie liczę; a drugi rząd jest poza tym biały. Prawdopodobnie uda mi się zagrać w golfa w dół, używając łańcuchów dodawania / odejmowania / mnożenia zamiast naiwnego algorytmu binarnego ... ale nie chcę podawać rozwiązania przyszłej układanki.
Nie zamierzam zamieszczać tutaj zdjęcia ze względu na jego absurdalne wymiary. Jeśli chcesz to zobaczyć, uruchom kod Pythona i potokuj dane wyjściowe do pliku .ppm. Następnie przekonwertuj .ppm na .gif i uruchom dane wyjściowe w Rapapaing . (alternatywnie, użyj nie-internetowego interpretera Piet, który mierzy .ppm)
edycja: trochę grałem w golfa, zmniejszając wagę Hamminga nazw zmiennych.
pre-quine mniej golfa :
To jest poprzednia wersja, zanim zdałem sobie sprawę, że mogę zrobić z niej jedną linijkę. Jest to nieco łatwiejsze do zrozumienia. Funkcja P tłumaczy specjalny zestaw instrukcji na Piet; a funkcja p przyjmuje liczbę całkowitą i tworzy sekwencję instrukcji, aby utworzyć tę liczbę całkowitą na stosie. Używam tylko instrukcji
=,+,:,|
, więc to może być prawdopodobnie bardziej wydajne ... ale trochę lubię mieć kompilator Piet z pełną wersją (swego rodzaju) w źródle.źródło
/Brainf..k/, 6988 bajtów
Brainfuck
Wypróbuj online!
Brain-Flak
Wypróbuj online!
Brain-Flak może przekroczyć limit czasu na TIO.
Wyjaśnienie
Wkrótce.
źródło
Explanation coming soon
->Jan 27
Ruby i Python (393 + 413 = 806 znaków)
Nieznaczna zmiana tej mojej odpowiedzi . Zdecydowanie można to zmniejszyć, ponieważ po prostu zakodowałem dane wejściowe bez jakiejkolwiek optymalizacji.
Rubinowy (393 znaków)
Python (413 znaków)
źródło
Python 2 do Befunge 98,
9478Ponownie, korzystając z dwóch sposobów tworzenia ciągów w języku Python:
Pyton:
Befunge 98:
Program python formatuje ciąg, aby zawierał siebie i znaki dla pojedynczego i podwójnego cudzysłowu.
Program Befunge działa w następujący sposób:
<
: przesuń się w lewo i owiń. Teraz wykonujemy polecenia od prawej do lewej"
: spraw, aby każdy napotkany char był wypychany na stos, aż napotkamy inny"
, więc pchamy:To właściwie tak naprawdę program python, odwrócony ze względu na sposób drukowania Befunge (która jest pętlą pop + print)
'M
: pushM
na stos.M
jest również liczbą 77, która jest o jeden mniejsza niż liczba znaków wypychanych na stos przez"
s.k
: usuń najwyższą wartość ze stosu (M
) i wykonaj następną operację tyle razy, plus jeden.,
: usuń najwyższą wartość ze stosu i wydrukuj znak.@
: zakończenie programu.źródło
Niedociążenie i Betaload , 16 bajtów (niekonkurujące)
Niedociążenie:
Betaload:
Betaload jest nadzbiorem Niedociążenia, więc mogą to być dwie odpowiedzi Niedociążenia.
To nie konkuruje, ponieważ Betaload został stworzony po opublikowaniu tego wyzwania.
źródło
Clipper i C (111 + 108 = 219 znaków)
Maszynka do strzyżenia (111)
C (108)
Jest to trochę kłopotliwe, ponieważ:
?'foo'
:-)?
i'
.#include <stdio.h>
, więc daje ostrzeżenie kompilatorowiźródło
PRINT
komenda BASIC może być również skrócona?
:-)Python i ~ - ~! - 77 i 81 = 158
Ten kod Python:
wypisuje to ~ - ~! kod:
Zdecydowanie można go znacznie ulepszyć i przyjmuje całą masę innych odpowiedzi.
źródło
JavaScript i Windows .bat (71 i 81)
i
źródło