Napisz właściwy quine, którego każdy obrót sam w sobie jest właściwym quine.
Na przykład jeśli kod źródłowy to abcdef
:
abcdef
wyszedłbyabcdef
bcdefa
wyszedłbybcdefa
cdefab
wyszedłbycdefab
defabc
wyszedłbydefabc
efabcd
wyszedłbyefabcd
fabcde
wyszedłbyfabcde
Obrót „polega na podzieleniu sznurka na dwie części i odwróceniu ich kolejności” .
Punktacja
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa. Obowiązują standardowe luki .
aaabbb
i mógłbym powiedzieć, że następny obrót jestbbbaaa
? A może musiałby to być następny obrótbaaabb
?baaabb
.Odpowiedzi:
Kod maszynowy Motorola MC14500B , 1 bajt
Wynik 1-bajtowy pochodzi z dwóch 4-bitowych instrukcji:
Wyjaśnienie
Piny procesora są ponumerowane:
Mówiąc w skrócie, piny od 4 do 7 służą do przedstawienia instrukcji instrukcji z instrukcją, ale bity są interpretowane w odwrotnej kolejności. Na przykład instrukcja
0001
miałaby pin nr 7 w stanie wysokim, a pin 6 do 4 w stanie niskim.Albo, mówiąc prościej, szpilki 9 do 12 są flagi wyjściowe
FLGF
,FLGO
,RTN
, iJMP
, odpowiednio. Zauważ, że dane są zwykle multipleksowane doWRITE
pinu (pin 2). Piny flagi wyjściowej są podobne do kodów wyjścia innego języka.Rotacje
Pozycja początkowa
Okresy zegarowe:
NOPO
Stawia instrukcji pin nr 10 (FLGO
) w stanie wysokim. Przed następnym okresem zegara styki flagi wyjściowej są ponownie ustawiane w stan niski.LDC
ładunki instruktażowe dopełnieniem wartości magistrali danych do wyniku Rejestrze, bez wpływu na szpilki flag wyjściowego.Tak więc, podczas dwóch okresów zegara programu, reprezentują styki flagi wyjściowej
0100 0000
, które, czytane w odwrotnej kolejności (podobnie jak styki wejściowe)0000 0010
, lub oryginalne instrukcje.Pierwszy obrót
Okresy zegarowe:
Podczas tych dwóch okresów zegarowych reprezentowane są styki flagi wyjściowej
0000 0100
, które po odwróceniu są instrukcjami0010 0000
.źródło