Cellata Automata benar-benar menarik. Yang biasanya dibicarakan adalah yang biner, yaitu yang diwakili oleh angka. Namun, menurut saya, itu sudah dilakukan sampai mati. CA ternary lebih menarik, tetapi kita memiliki semua ASCII untuk dipertimbangkan! Betapa menyenangkannya itu!
Alih-alih memutuskan aturan untuk setiap karakter, saya akan menggunakan aturan memutuskan sederhana yang akan saya bicarakan segera. Untuk memutuskan generasi berikutnya, kita melihat tiga sel "atas", mirip seperti automata seluler. Perhatikan sebuah contoh:
QWERTY
X Y Z
"Atas" Y
adalah WER
, menjadi sel-sel di atas-dan-kanan, di atas, dan di atas-dan kiri. Y akan menjadi hasil dari fungsi yang akan saya definisikan, yang merupakan fungsi pada string tiga-char. Bagian "atas" X
adalah QW
, atau ruang yang mengisi sel yang tidak ada / hilang .
Sekarang, untuk fungsi yang menyenangkan ! Saya menyebut urutan ini urutan XOROR karena suatu alasan. Biarkan A
menjadi charcode sel kiri atas, B
menjadi charcode sel di atas, dan C
menjadi charcode sel kanan atas. Lalu, sel yang dihasilkan adalah karakter yang karakternya adalah (A XOR B) OR C
, yaitu (A^B)|C
,. (Jika nilai yang dihasilkan lebih besar dari 126, maka diatur ke (CHARCODE % 127) + 32
. Tidak ada yang dilakukan jika nilai kurang dari 32.) Berikut adalah contoh dari seed 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
Dan kita bisa melanjutkan untuk sementara waktu selanjutnya. Modifikasi string ini disebut urutan XOROR.
Tujuan Anda menulis program atau fungsi yang melakukan salah satu dari tugas-tugas berikut:
- Diberikan string
s
dan angkan >= 0
, mengeluarkann
string th pada urutan XOROR dengan seeds
, dengann = 0
menjadi transformasi pertama string. - Diberikan string
s
, output (untuk program) atau menghasilkan (untuk fungsi / generator) aliran tak terbatas dari urutan XOROR dengan seeds
. Anda dapat memilih untuk berhenti jika urutannya berulang, tetapi ini tidak perlu.
s
akan selalu hanya terdiri dari karakter ASCII yang dapat dicetak, dari ruang hingga tilde plus tab (tidak ada baris baru.)
Ini adalah kode-golf , sehingga program terpendek dalam byte menang.
o
itu membuatnya terlihat seperti terburu-buru zerg .
127%127+32==32
.
n=0
bukan string asli?
(d^!)|(space)
. Sedangkan untuk Anda pertanyaan kedua, Anda tampil (CHAR%127)+32
setelah XOROR dilakukan.