Rotasi-aman quine


17

Tulis quine yang tepat yang setiap putarannya adalah quine yang tepat.

Misalnya, jika kode sumber Anda abcdef, maka:

  • abcdef akan menghasilkan abcdef
  • bcdefa akan menghasilkan bcdefa
  • cdefab akan menghasilkan cdefab
  • defabc akan menghasilkan defabc
  • efabcd akan menghasilkan efabcd
  • fabcde akan menghasilkan fabcde

Rotasi "dibuat dengan memisahkan string menjadi dua bagian dan membalikkan urutannya" .

Mencetak gol

Ini adalah . Jawaban terpendek dalam byte menang. Celah standar berlaku.


Jadi saya dapat memiliki program aaabbbdan saya dapat mengatakan bahwa rotasi selanjutnya adalah bbbaaa? Atau haruskah rotasi selanjutnya baaabb?
Beta Decay

1
Rotasi selanjutnya adalah baaabb.
Leaky Nun

1
Catatan tambahan, quine Fission standar adalah quine berbeda dari safe-rotasi: tidak peduli bagaimana Anda memutarnya, ia akan selalu mencetak kode sumber asli.
Martin Ender

1
Jika quine dalam bahasa adalah satu byte, apakah itu curang?
MD XF

1
Apakah ini quine yang tepat?
tsh

Jawaban:


10

Kode Mesin Motorola MC14500B , 1 byte

Skor 1 byte berasal dari dua instruksi 4-bit:

0000 0010

Penjelasan

Motorola MC145008 adalah prosesor CMOS statis tunggal, satu bit, yang dioptimalkan untuk tugas yang berorientasi pada keputusan. Prosesor ini ditempatkan dalam paket 16-pin dan menampilkan 16 instruksi empat-bit. Instruksi melakukan operasi logis pada data yang muncul pada jalur data dua arah dua arah dan data dalam Daftar Hasil akumulasi satu bit dalam ICU. Semua operasi dilakukan pada level bit.

Pin prosesor diberi nomor:

Penugasan pin

Instruksi disajikan untuk chip pada 4 pin instruksi, ( I0, I1, I2, I3), dan terkunci ke dalam Instruction Register, (IR), di tepi negatif-akan dari X1.

Dalam istilah awam, pin 4 hingga 7, digunakan untuk menyajikan Instruksi Daftar dengan instruksi, tetapi bit ditafsirkan dalam urutan terbalik. Sebagai contoh, instruksi 0001akan memiliki pin # 7 di negara tinggi dan pin 6 sampai 4 di negara rendah.

Instruksi, didekodekan dalam Logika Kontrol (CTL), mengirimkan perintah logika yang sesuai ke LU. Decoding lebih lanjut juga dilakukan di CTL untuk mengirim sejumlah bendera keluaran ( JMP, RTN, FLGO, FLGF) ke pin 9 sampai 12. ini digunakan sebagai sinyal kontrol eksternal dan tetap aktif untuk jangka waktu jam penuh setelah tepi negatif-akan dari X1.

Atau, secara sederhana, pin 9 sampai 12 adalah bendera keluaran FLGF, FLGO, RTN, dan JMPmasing-masing. Perhatikan bahwa data biasanya digandakan ke WRITEpin (pin # 2). Pin bendera output mirip dengan kode keluar bahasa lain.

Setiap instruksi ICU dijalankan dalam satu periode jam tunggal.

Rotasi

Posisi awal

0000    NOPO
0010    LDC

Periode jam:

  1. The NOPOmenempatkan instruksi pin # 10 ( FLGO) di negara yang tinggi. Sebelum periode jam berikutnya, pin bendera output dimasukkan kembali ke kondisi rendah.
  2. The LDCinstruksi beban komplemen dari nilai Bus Data ke Hasil Register, tanpa mempengaruhi output pin bendera.

Jadi, selama dua periode jam program, pin flag output telah diwakili 0100 0000, yang, dibaca secara terbalik (seperti pin input), adalah 0000 0010, atau instruksi asli.

Rotasi pertama

0010    LDC
0000    NOPO

Periode jam:

  1. Pelengkap Data Bus dimuat ke Daftar Hasil, tanpa pengaruh pin bendera output.
  2. Pin # 10 di alihkan ke status tinggi.

Selama dua periode jam ini, pin bendera output telah diwakili 0000 0100, yang, ketika dibalik, adalah instruksi 0010 0000.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.