セルオートマトンは本当に魅力的です。通常語られるのはバイナリー、つまり数値で表現できるものです。しかし、私の意見では、それらは死ぬまで行われました。三項CAはより興味深いものですが、考慮すべきASCIIがすべてあります!なんて楽しいのでしょう!
各キャラクターのルールセットを決定する代わりに、すぐに説明する簡単な決定ルールを使用します。次世代を決定するために、セルオートマトンのように3つの「トップ」セルを調べます。例に注目してください。
QWERTY
X Y Z
の「上部」はでY
ありWER
、上下左右のセルです。Yは、3文字の文字列に対する関数である、定義しようとしている関数の結果になります。の「トップ」X
は QW
、または存在しない/欠落しているセルを埋めるスペースです。
さて、楽しい機能のために!このシーケンスをXORORシーケンスと呼んでいます。をA
左上のセルの文字コード、B
上のセルの文字コード、C
右上のセルの文字コードにします。次に、結果のセルは、文字コードがの文字(A XOR B) OR C
、つまりです(A^B)|C
。(結果の値が126より大きい(CHARCODE % 127) + 32
場合、値は32に設定されます。値が32より小さい場合、何も実行されません。)以下にシードの例を示しHello, World!
ます。
S: Hello, World!
0: mmmo/c_ z}~)e
m = ( )^(H)|(e) = (32^72)|101 = 104|101 = 109 (m)
m = (H)^(e)|(l) = (72^101)|108 = 45|108 = 109 (m)
etc.
1: mmo/c_< +wl
2: mo/c_<c< + |;
3: o/c_<c ?+ g
4: oc_<c c??4+gg
5: 0_<c c 4+ o
6: _<c ccc4??ooo
7: c ccc4 ?o o
8: ccccc4w? pooo
9: cccc4w h o
A: ccc4wc hh ooo
B: cc4wc4kh ooo
C: c4wc4 #ooo o
D: wwc4w4#ooo oo
E: wc4wwc oo oo
F: w4wwc4oo oo o
G: wwwc4 oo oo
H: wwc4w4 oo oo
I: w4wwc4oooo oo
J: wwwc4 oo oo
K: wwc4w4oo oo o
L: wc4wwo oo oo
M: w4wwo8ooo oo
N: wwwo8 o oo o
O: wwo8w8oooo oo
そして、私たちは今後しばらく続けることができます。この文字列の変更は、XORORシーケンスと呼ばれます。
目的次のタスクのいずれかを実行するプログラムまたは関数を作成します。
- ストリング所与
s
及び数n >= 0
、出力n
シードとXOROR配列上番目の文字列をs
用いて、n = 0
文字列の最初の変換です。 - 文字列を
s
指定すると、seedを使用してXORORシーケンスの無限ストリームを出力(プログラムの場合)または生成(関数/ジェネレーターの場合)しs
ます。シーケンスが繰り返される場合は停止することもできますが、これは必要ありません。
s
スペースからチルダとタブまでの印刷可能なASCII文字のみで構成されます(改行はありません)。
これはcode-golfであるため、バイト単位の最短プログラムが優先されます。
127%127+32==32
。
n=0
元の文字列ではないのですか?
(d^!)|(space)
。2番目の質問については、XORORの実行(CHAR%127)+32
後に実行します。