Powiązane: Interquine
Program A wyprowadza kod programu B po uruchomieniu, a B wyprowadza źródło C, a C wyprowadza źródło A.
Tym razem nie możesz wymienić dwóch postaci i wymienić ponownie :)
Wymagania:
- Tylko jeden język we wszystkich programach
- Obowiązują standardowe ograniczenia luk
- Wszystkie programy są różne. Jeden program, który sam się wyprowadza, nie kwalifikuje się. Dwa, które produkują się nawzajem, również się nie kwalifikują.
- Wszystkie programy są niepuste lub mają co najmniej 1 bajt długości.
- Nie ma nic do czytania, ponieważ jest podłączony do stdin
/dev/null
(można nadużywać tej reguły, jeśli możliwe ). Wyjście przechodzi na standardowe wyjście. - Nie używaj funkcji generujących losowe wyniki.
Dodatkowy:
- Podaj wyjaśnienia, jeśli to możliwe
Wynik jest długością najkrótszego (czy możesz wygenerować długi program z krótkiego?). Podaj długość wszystkich programów i zaznacz najmniejszą liczbę. Końcowy znak nowej linii się nie liczy. Najniższy wynik wygrywa .
Odpowiedzi:
Python 3 , 50 bajtów
Wypróbuj online!
Ostatnim wyrazem idzie od
1*2%7
celu2*2%7
, aby4*2%7
następnie z powrotem1*2%7
.źródło
1-2/_
tworzy 3-cyklowy cykl(1,-1,3)
, który oszczędza bajt, nie wymagając ucieczki%
.n
,s='s=%r;print(s%%(s,-~%i%%3))';print(s%(s,-~1%3))
zastępując3
zn
RProgN 2 ,
128 bajtówWyjaśnione
Ze względu na dogodny charakter domyślnego wyjścia RProgN, pozostawia liczbę, która zapętla między 1, 2 i 4, w pierwszym wierszu, a strunkową wersję funkcji w drugim. Zainspirowany @LeakyNun „s Python Odpowiedź
Wypróbuj online!
źródło
CJam , 17 bajtów
Wypróbuj online!
Prawdopodobnie nie optymalne, ale jest to modyfikacja mojego podejścia do poprzedniego wyzwania .
Podstawowa idea jest taka sama, ale wykonujemy dwie zamiany, z których jedna zawsze nie działa. Wskaźniki są dotknięte
2
,3
i6
:źródło
CJam , 14 bajtów
Wypróbuj online!
Pozostałe programy mają odpowiednio 26 i 38 bajtów.
Wyjaśnienie
Jeszcze inne podejście!
źródło
Galaretka , 11 bajtów
Wygenerowano ten sam program z 1 zamienionym na 2 , który zastąpił 2 przez 4 , co generuje oryginalny program.
Wypróbuj online!
źródło
Python 3, 127, 127 i 127 bajtów
odciski
odciski
Opiera się to na mojej odpowiedzi na pytanie Interquine, które jest oparte na normalnym quine Pythona. I wiem dokładnie, co zrobić, gdy otrzymamy pytanie o quad-interquine;)
źródło
CJam , 14 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript (ES6),
6355 bajtówAlternatywne rozwiązanie przy użyciu
Function.prototype.toString
(cheaty, 30 bajtów)źródło
Rachunek Lambda , 38 znaków, 44 bajty
Proste rozwiązanie oparte na matce wszystkich quinesów: kombinator y :
Korzystając z redukcji beta, widzimy, że to rzeczywiście interkwina:
źródło
Java 8, 118 bajtów
int i=0;
Różnica jest tylko między funkcjami / wyjściami (to albo0
,1
albo2
).Wyjaśnienie:
Wypróbuj online.
Dodatkowe wyjaśnienie:
quine -part:
String s
zawiera niesformatowany kod źródłowy%s
służy do umieszczenia tego ciągu w sobies.format(...)
%c
,%2$c
I34
są wykorzystywane do formatowania cudzysłowia ("
)%%
służy do formatowania znaku modulo (%
)s.format(s,...,34,s)
łączy to wszystko razemRóżnica wyjść / funkcji:
Takie samo podejście jak w przypadku większości innych odpowiedzi:
int i
zaczyna się albo0
,1
albo2
++i%3
przekształca to następny (0→1
;1→2
,2→0
)źródło
> <> , 15 bajtów
Wypróbuj online!
Używa tej samej ogólnej formy, co inne quiny> <>, ale ma dodatkowy znak z przodu, który jest przełączany przez 1, 2 i 4.
źródło