Schreiben Sie eine richtige Quine, deren jede Umdrehung selbst eine richtige Quine ist.
Wenn Ihr Quellcode beispielsweise lautet abcdef
:
abcdef
würde ausgebenabcdef
bcdefa
würde ausgebenbcdefa
cdefab
würde ausgebencdefab
defabc
würde ausgebendefabc
efabcd
würde ausgebenefabcd
fabcde
würde ausgebenfabcde
Eine Drehung "erfolgt durch Teilen einer Schnur in zwei Teile und Umkehren ihrer Reihenfolge" .
Wertung
Das ist Code-Golf . Kürzeste Antwort in Bytes gewinnt. Es gelten Standardlücken .
aaabbb
und ich könnte sagen, dass die nächste Drehung istbbbaaa
? Oder müsste die nächste Umdrehung seinbaaabb
?baaabb
.Antworten:
Motorola MC14500B Maschinencode , 1 Byte
Die 1-Byte-Bewertung wird aus zwei 4-Bit-Anweisungen abgeleitet:
Erläuterung
Die Pins des Prozessors sind nummeriert:
In Laienbegriffen werden die Stifte 4 bis 7 verwendet, um das Befehlsregister mit einem Befehl zu versehen, aber die Bits werden in umgekehrter Reihenfolge interpretiert. Zum Beispiel
0001
würde der Befehl Pin # 7 im hohen Zustand und die Pins 6 bis 4 im niedrigen Zustand haben.Oder, einfach gesagt, Stifte 9 bis 12 sind die Ausgänge Flags
FLGF
,FLGO
,RTN
, undJMP
, beziehungsweise. Beachten Sie, dass Daten normalerweise auf denWRITE
Pin (Pin 2) gemultiplext werden . Die Ausgangs-Flag-Pins ähneln den Exit-Codes anderer Sprachen.Drehungen
Ausgangsposition
Die Uhrzeiten:
NOPO
Befehl versetzt den Pin # 10 (FLGO
) in den High-Zustand. Vor der nächsten Taktperiode werden die Ausgangsflagpins wieder in den niedrigen Zustand versetzt.LDC
Befehl lädt das Komplement des Werts des Datenbusses in das Ergebnisregister, ohne die Ausgangsflag-Pins zu beeinflussen.Während der zwei Taktperioden des Programms haben sich also die Ausgangs-Flag-Pins dargestellt
0100 0000
, die umgekehrt (wie die Eingangs-Pins) gelesen werden0000 0010
, oder die ursprünglichen Anweisungen.Erste Umdrehung
Die Uhrzeiten:
Während dieser beiden Taktperioden haben die Ausgangsflag-Pins dargestellt
0000 0100
, die, wenn sie umgekehrt sind, die Anweisungen sind0010 0000
.quelle