Cel:
Koduj dwa programy, w których każdy z programów wyprowadza oba kody źródłowe z przeplotem na znak, jak zamek błyskawiczny, Quine z podwójną szczeliną. Wyjście z Quine z podwójną szczeliną zaczyna się od pierwszego znaku z kodu źródłowego pierwszego programu. Jeśli kod źródłowy jednego z programów jest krótszy niż inny, wówczas resztę danych wyjściowych należy wypełnić resztą dłuższego kodu źródłowego.
Zasady:
- Możesz używać dowolnego języka programowania dla obu programów, niekoniecznie tego samego języka programowania dla obu programów.
- Twoje programy nie powinny pobierać żadnych danych wejściowych z pliku, nazwy pliku, sieci, innego programu ani niczego innego.
Obowiązkowe kryteria:
- Jest jakiś haczyk, gdzieś na wyjściu słowo
QUINE
wielkimi literami musi istnieć nieprzerwanie. - Musisz określić, jakich dwóch języków programowania używasz. Jeśli używasz tego samego języka programowania dla obu języków, musisz podać tylko jeden język programowania.
- Oba programy powinny być w stanie wykonać lub być interpretowane odpowiednio niezależnie od drugiego programu.
Przykład:
Mając ten przykładowy kod źródłowy programu jeden :
"QIE"
Posiadanie tego przykładowego kodu źródłowego programu drugiego :
"UN"
Następnie prawidłowe wyjście Quine z podwójnym nacięciem z obu programów musi być:
""QUINE""
To jest golf golfowy, najmniej bajtów przy sumowaniu długości obu kodów źródłowych, i oczywiście także długość każdego wyjścia programów, wygrywa!
A
iXYZ
być przeplatane?AXYZ
?.+
lubz
działaOdpowiedzi:
CJam,
4947 bajtówi
oba drukują
Wypróbuj online: program 1 , program 2 , dowód ważności
Jak oni pracują
Program 1 kończy się tutaj i ma ciąg reprezentujący cały kod źródłowy (który każdy znak powtarza się dwukrotnie), a także ciąg e # QUINE na stosie.
Program 2 dodatkowo analizuje
e#QUINE
, co jest komentarzem.W obu przypadkach CJam automatycznie drukuje dwa ciągi, co skutkuje wyżej wymienionymi danymi wyjściowymi.
źródło
Poważnie,
465642 bajtówHex Dump:
Drugi program to ten dokładnie odwrócony program. Zawiera niewidoczny znak, ale liczba bajtów jest prawidłowa. Oba programy generują ten ciąg palindromiczny:
(Z jakiegoś powodu wyświetla niewidoczny znak, gdy wyświetla go w moim terminalu. Naprawdę nie rozumiem tego bajtu 7F).
Jak to działa:
Reszta programu nie jest wykonywana.
Następnie w innym kierunku:
W tym momencie uruchamiamy teraz pierwszy program powyżej, więc wykonywanie jest kontynuowane, jak tam opisano.
W dużym stopniu wykorzystuję fakt, że kilka poleceń nic nie robi z łańcuchami ani pustymi stosami. Wykorzystuję również nieoczekiwane zachowanie,
t
gdy na stosie jest tylko jeden przedmiot. Nie oczekuj, że ten program będzie działał w przyszłych wersjach Seriously.Ponieważ wersja online poważnie interpretera nadal jest zepsuta, musisz pobrać interpreter i uruchomić go na własnym komputerze, aby go przetestować.
źródło
GolfScript, 46 bajtów
i
oba drukują
Wypróbuj online: program 1 , program 2 , dowód ważności
Jak to działa
Kod źródłowy programu 2 dodatkowo analizuje
QUINE\n
, które są dwoma niezdefiniowanymi tokenami.źródło
Perl, 61 + 60 = 121 bajtów
Program 1:
Program 2:
Myślałem, że spróbuję w języku innym niż golf. Jest to po prostu uniwersalny konstruktor quine w Perlu, zmodyfikowany, aby podwoić każdą postać przed wydrukowaniem i dołączyć
QUINE
do końca. Następnie musimy tylko przykleić komentarz na końcu kodu, aby zrekompensować dodany tekst.(Napisałem to, nie patrząc na inne odpowiedzi. Okazuje się, że można zapisać bajt, umieszczając cały komentarz w jednym programie, ale nie jestem pewien, czy powinienem po prostu rażąco kopiować takie algorytmy.)
źródło