Automaty komórkowe są naprawdę fascynujące. Te, o których zwykle się mówi, to te binarne, tzn. Te reprezentowane przez liczbę. Jednak te, moim zdaniem, zostały skazane na śmierć. Trójstronne urzędy certyfikacji są bardziej interesujące, ale musimy wziąć pod uwagę wszystkie ASCII! Cóż to może być za przyjemność!
Zamiast decydować o zestawie reguł dla każdej postaci, użyję prostej reguły decydującej, o której powiem wkrótce. Aby zdecydować o następnej generacji, patrzymy na trzy „górne” komórki, podobnie jak automaty komórkowe. Obserwuj przykład:
QWERTY
X Y Z
„Góra” Y
to WER
komórki powyżej i po prawej, powyżej i powyżej oraz po lewej stronie. Y będzie wynikiem funkcji, którą zamierzam zdefiniować, która jest funkcją na łańcuchach trójznakowych. „Top” o X
to QW
, czy wypełnienie przestrzeni w nieistniejącej / brakujące ogniwa .
Teraz funkcja zabawy ! Nie bez powodu nazywam tę sekwencję sekwencją XOROR. Niech A
będzie górnym lewym kodem komórki, B
powyższym kodem komórki i C
będzie prawym górnym kodem komórki. Następnie uzyskany komórka jest postać, której charCode to (A XOR B) OR C
, że jest (A^B)|C
. (Jeśli wynikowa wartość jest większa niż 126, wówczas jest ustawiona na (CHARCODE % 127) + 32
. Nic nie jest robione, jeśli wartość jest mniejsza niż 32.) Oto przykład ziarna 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
I możemy kontynuować przez jakiś czas. Ta modyfikacja ciągu nazywana jest sekwencją XOROR.
Cel Masz napisać program lub funkcję, która wykonuje jedno z następujących zadań:
- Biorąc pod uwagę ciąg
s
i liczbęn >= 0
,n
wyślij th ciąg w sekwencji XOROR z nasionems
,n = 0
będąc pierwszą transformacją łańcucha. - Podany ciąg
s
wyjściowy (dla programów) lub wygenerowany (dla funkcji / generatorów) nieskończony strumień sekwencji XOROR z ziarnems
. Możesz zatrzymać, jeśli sekwencja się powtarza, ale nie jest to konieczne.
s
zawsze będzie się składać wyłącznie z drukowalnych znaków ASCII, od spacji do tyldy plus tabulatorów (bez nowych linii).
To jest golf golfowy , więc wygrywa najkrótszy program w bajtach.
o
sprawiają, że wygląda jak przypływ zergów .
127%127+32==32
.
n=0
nie jest oryginalny ciąg?
(d^!)|(space)
. Co do drugiego pytania, wykonujesz (CHAR%127)+32
po wykonaniu XOROR.