Zelluläre Automaten sind wirklich faszinierend. Diejenigen, über die normalerweise gesprochen wird, sind die binären, dh diejenigen, die durch eine Zahl darstellbar sind. Diese wurden jedoch meiner Meinung nach zu Tode gebracht. Ternäre CAs sind interessanter, aber wir müssen alle ASCII-Werte berücksichtigen! Was für ein Spaß könnte das sein!
Anstatt für jeden Charakter einen Regelsatz zu bestimmen, verwende ich eine einfache Entscheidungsregel, über die ich gleich sprechen werde. Um die nächste Generation zu bestimmen, betrachten wir die drei "oberen" Zellen, ähnlich wie bei einem zellularen Automaten. Beachten Sie ein Beispiel:
QWERTY
X Y Z
Die "Spitze" von Y
ist WER
, die Zellen oben und rechts, oben und oben und links zu sein. Y wird das Ergebnis der Funktion sein, die ich definieren werde. Dabei handelt es sich um eine Funktion für Zeichenfolgen mit drei Zeichen. Die „Spitze“ von X
ist QW
, oder eine Raumfüllung im inexistent / fehlende Zelle .
Nun zur spaßigen Funktion! Ich bezeichne diese Sequenz aus einem bestimmten Grund als XOROR-Sequenz. Sei A
der Zeichencode der oberen linken Zelle, B
der Zeichencode C
der oberen Zelle und der Zeichencode der oberen rechten Zelle. Dann ist die resultierende Zelle das Zeichen, dessen Zeichencode ist (A XOR B) OR C
, das heißt (A^B)|C
. (Wenn ein resultierender Wert größer als 126 ist, wird er auf gesetzt (CHARCODE % 127) + 32
. Wenn ein Wert kleiner als 32 ist, wird nichts getan.) Hier ein Beispiel für den Startwert 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
Und wir können noch eine Weile weitermachen. Diese Änderung der Zeichenfolge wird als XOROR-Sequenz bezeichnet.
Ziel Sie müssen ein Programm oder eine Funktion schreiben, die eine der folgenden Aufgaben ausführt:
- Wenn Sie eine Zeichenfolge
s
und eine Zahl angebenn >= 0
, geben Sie dien
th-Zeichenfolge in der XOROR-Sequenz mit seed auss
, wobein = 0
es sich um die erste Transformation der Zeichenfolge handelt. - Wenn ein String angegeben wird
s
, wird ein unendlicher Stream der XOROR-Sequenz mit Seed ausgegeben (für Programme) oder generiert (für Funktionen / Generatoren)s
. Sie können anhalten, wenn die Sequenz wiederholt wird, dies ist jedoch nicht erforderlich.
s
besteht immer nur aus druckbaren ASCII-Zeichen, vom Leerzeichen bis zur Tilde plus Tabulatoren (keine Zeilenumbrüche)
Dies ist ein Code-Golf , also gewinnt das kürzeste Programm in Bytes.
o
s lassen es wie ein Zergrausch aussehen .
127%127+32==32
.
n=0
nicht die ursprüngliche Zeichenfolge?
(d^!)|(space)
. Was Ihre zweite Frage betrifft , führen Sie diese aus, (CHAR%127)+32
nachdem das XOROR ausgeführt wurde.