Hücresel Otomatlar gerçekten büyüleyici. Genelde konuşulanlar ikili olanlardır, yani bir sayıyla temsil edilebilenlerdir. Ancak, bence, onlar ölümüne yapıldı. Üçlü CA'lar daha ilginç, ancak dikkate alınması gereken tüm ASCII'lere sahibiz! Ne eğlenceli olabilir ki!
Her karakter için bir kural kümesi belirlemek yerine, yakında konuşacağım basit bir karar kuralı kullanacağım. Gelecek nesillere karar vermek için, hücresel otomatlara benzeyen üç "üst" hücreye bakarız. Bir örneğe dikkat edin:
QWERTY
X Y Z
"Top" nin Y
olduğunu WER
yukarıda ve sağ yukarıda ve yukarıda ve sol hücreleri olmak. Y, tanımlayacağım fonksiyonun sonucu olacak, üç karakterli dizgelerde bir işlev. "Top" X
ifadesi QW
, varolmayan / eksik hücrede bulunan bir boşluktur .
Şimdi, eğlence işlevi için! Bu diziye bir nedenden dolayı XOROR dizisi diyorum. Izin A
sol üst hücre charCode olmak, B
yukarıdaki hücre charCode olabilir ve C
sağ üst hücre charCode olmak. Daha sonra, ortaya çıkan hücre, charcode olan karakterdir (A XOR B) OR C
, yani (A^B)|C
. (Elde edilen değer 126'dan büyükse, o zaman ayarlanır (CHARCODE % 127) + 32
. Bir değer 32'den küçükse hiçbir şey yapılmaz.) İşte tohumun bir örneği 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
Ve bundan sonra bir süre devam edebiliriz. Dizenin bu modifikasyonuna XOROR dizisi denir.
Amaç Aşağıdaki görevlerden birini yapan bir program ya da işlev yazmalısınız:
- Bir dizi göz önüne alındığında,
s
ve bir dizin >= 0
çıkışn
tohumu ile XOROR sekansı inci dizisis
ile,n = 0
dizge ilk dönüşüm olmak. - Bir dize verildiğinde
s
, çıktı (programlar için) veya tohumla XOROR dizisinin sonsuz bir akışını (işlevler / üreticiler için) oluştururs
. Dizi tekrarlanırsa durmayı seçebilirsiniz, ancak bu gerekli değildir.
s
her zaman yalnızca yazdırılabilir ASCII karakterlerinden oluşur, uzaydan tilde artı sekmelere (yeni satır yok).
Bu bir kod golf , yani bayt cinsinden en kısa program kazanır.
o
s zerg acele gibi görünmesini sağlar .
127%127+32==32
.
n=0
orijinal dize değil?
(d^!)|(space)
. İkinci soruya gelince , XOROR (CHAR%127)+32
yapıldıktan sonra gerçekleştirin.