回転安全なクイン


17

すべての回転がそれ自体が適切なクインである適切なクインを書きます。

たとえば、ソースコードがの場合、次のようになりますabcdef

  • abcdef 出力します abcdef
  • bcdefa 出力します bcdefa
  • cdefab 出力します cdefab
  • defabc 出力します defabc
  • efabcd 出力します efabcd
  • fabcde 出力します fabcde

回転は、「文字列を2つの部分に分割し、それらの順序を逆にすることによって行われます」

得点

これはです。バイト単位の最短回答が優先されます。標準の抜け穴が適用されます。


だから私はプログラムaaabbbを持っていて、次のローテーションは何と言えるbbbaaaでしょうか それとも、次の回転が必要baaabbですか?
ベータ崩壊

1
次の回転はbaaabbです。
リーキー修道女

1
ちなみに標準の核分裂クインは、回転に対して安全な別のクインです。どのように回転しても、常に元のソースコードが印刷されます。
マーティンエンダー

1
言語のクインが1バイトの場合、それは不正行為ですか?
MD XF

1
、これは適切なQUINE?
tsh

回答:


10

Motorola MC14500Bマシンコード、1バイト

1バイトのスコアは、2つの4ビット命令から導出されます。

0000 0010

説明

Motorola MC145008は、意思決定指向のタスク向けに最適化されたシングルチップ、1ビットのスタティックCMOSプロセッサです。プロセッサは16ピンパッケージに収容され、16個の4ビット命令を備えています。命令は、1ビットの双方向データラインに表示されるデータとICU内の1ビットの累積結果レジスタのデータに対して論理演算を実行します。すべての操作はビットレベルで実行されます。

プロセッサのピンには番号が付けられています。

ピン割り当て

命令は、4本の命令ピンでチップに提示される(I0I1I2I3)、およびX1の立ち下がりで、命令レジスタ(IR)にラッチされます。

簡単に言えば、ピン4〜7は命令レジスタに命令を提示するために使用されますが、ビットは逆の順序で解釈されます。たとえば、命令の0001ピン#7が高状態にあり、ピン6〜4が低状態にあります。

命令は、制御ロジック(CTL)でデコードされ、適切なロジックコマンドをLUに送信します。さらに、復号化は、出力フラグの数を送信するCTLで行われる(JMPRTNFLGOFLGF)これらは、外部制御信号として使用され、X1の立ち下がり後の全クロック周期のためにアクティブなままさ12を介してピン9。

または、簡単に言えば、ピン9〜12は、出力フラグでありFLGFFLGORTN、およびJMP、それぞれ。通常、データはWRITEピン(ピン#2)に多重化されることに注意してください。出力フラグピンは、他の言語の終了コードに似ています。

ICUの各命令は、単一のクロック周期で実行されます。

回転

初期位置

0000    NOPO
0010    LDC

クロック周期:

  1. このNOPO命令により、ピン#10(FLGO)がHigh状態になります。次のクロック周期の前に、出力フラグピンはLow状態に戻ります。
  2. このLDC命令は、出力フラグピンに影響を与えることなく、データバスの値の補数を結果レジスタにロードします。

そのため、プログラムの2クロック周期の間に、出力フラグピンはを表して0100 0000おり、これは逆に(入力ピンのように)読み取られる0000 0010か、または元の命令です。

最初の回転

0010    LDC
0000    NOPO

クロック周期:

  1. データバスの補数が結果レジスタにロードされ、出力フラグピンの影響はありません。
  2. ピン10をハイ状態に切り替えます。

これらの2つのクロック周期の間、出力フラグピンはを表し0000 0100ており、反転すると命令になり0010 0000ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.