Quine a prova di rotazione


17

Scrivi un quine corretto, ogni cui rotazione è essa stessa un quine corretto.

Ad esempio, se il codice sorgente è abcdef, quindi:

  • abcdef sarebbe uscita abcdef
  • bcdefa sarebbe uscita bcdefa
  • cdefab sarebbe uscita cdefab
  • defabc sarebbe uscita defabc
  • efabcd sarebbe uscita efabcd
  • fabcde sarebbe uscita fabcde

Una rotazione "si ottiene dividendo una stringa in due pezzi e invertendo il loro ordine" .

punteggio

Questo è . Vince la risposta più breve in byte. Si applicano scappatoie standard .


Quindi potrei avere un programma aaabbbe potrei dire che la prossima rotazione è bbbaaa? O dovrebbe essere la prossima rotazione baaabb?
Decadimento beta

1
La prossima rotazione è baaabb.
Leaky Nun,

1
Nota a margine , lo standard Fission quine è un diverso quine di sicurezza di rotazione: indipendentemente da come lo si ruota, stamperà sempre il codice sorgente originale.
Martin Ender,

1
Se un quine in una lingua è un byte, è barare?
MD XF,

1
Questo è un vero quine?
tsh

Risposte:


10

Motorola MC14500B Codice macchina , 1 byte

Il punteggio di 1 byte deriva da due istruzioni a 4 bit:

0000 0010

Spiegazione

Motorola MC145008 è un processore CMOS statico a chip singolo, un bit, ottimizzato per attività orientate alle decisioni. Il processore è contenuto in un pacchetto a 16 pin e presenta 16 istruzioni a quattro bit. Le istruzioni eseguono operazioni logiche sui dati che compaiono su una linea di dati bidirezionale a un bit e sui dati in un registro dei risultati che accumula un bit all'interno dell'ICU. Tutte le operazioni vengono eseguite a livello di bit.

I pin del processore sono numerati:

Assegnazione dei pin

Istruzioni sono presentati al chip sui 4 perni istruzione, ( I0, I1, I2, I3), e vengono agganciati nel Instruction Register (IR), sul bordo andamento negativo di X1.

In parole povere, i pin da 4 a 7 vengono utilizzati per presentare un'istruzione al registro delle istruzioni, ma i bit vengono interpretati in ordine inverso. Ad esempio, l'istruzione 0001avrebbe il pin # 7 nello stato alto e i pin da 6 a 4 nello stato basso.

Le istruzioni vengono decodificate in Control Logic (CTL), inviando i comandi logici appropriati al LU. Ulteriore decodifica viene eseguita allo CTL inviare un numero di flag di uscita ( JMP, RTN, FLGO, FLGF) ai pin 9 a 12. Questi sono utilizzati come segnali di controllo esterni e rimangono attivi per un periodo di clock completo dopo il fronte di andamento negativo di X1.

Oppure, messo semplicemente, perni 9 a 12 sono i flag di uscita FLGF, FLGO, RTN, e JMP, rispettivamente. Si noti che i dati sono in genere multiplexati al WRITEpin (pin # 2). I pin del flag di output sono simili ai codici di uscita di altre lingue.

Ciascuna delle istruzioni dell'ICU viene eseguita in un singolo periodo di clock.

rotazioni

Posizione iniziale

0000    NOPO
0010    LDC

I periodi di orologio:

  1. L' NOPOistruzione mette il pin # 10 ( FLGO) nello stato alto. Prima del successivo periodo di clock, i pin dei flag di uscita vengono riportati allo stato basso.
  2. L' LDCistruzione carica il complemento del valore del bus dati nel registro dei risultati, senza influire sui pin del flag di uscita.

Quindi, durante i due periodi di clock del programma, sono rappresentati i pin dei flag di output 0100 0000, che, letti al contrario (come i pin di input) 0000 0010, o le istruzioni originali.

Prima rotazione

0010    LDC
0000    NOPO

I periodi di orologio:

  1. Il complemento del bus dati viene caricato nel registro dei risultati, senza alcun effetto sui pin flag di output.
  2. Il pin n. 10 è passato allo stato alto.

Durante questi due periodi di clock, sono rappresentati i pin del flag di uscita 0000 0100, che, quando invertiti, sono le istruzioni 0010 0000.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.