Los autómatas celulares son realmente fascinantes. Los que generalmente se mencionan son los binarios, es decir, los representables por un número. Sin embargo, esos, en mi opinión, se han hecho a la muerte. Las AC ternarias son más interesantes, ¡pero tenemos que considerar todas las ASCII! ¡Qué divertido podría ser eso!
En lugar de decidir un conjunto de reglas para cada personaje, usaré una regla de decisión simple de la que hablaré pronto. Para decidir la próxima generación, observamos las tres células "superiores", de forma muy similar a un autómata celular. Observa un ejemplo:
QWERTY
X Y Z
La "parte superior" de Y
es WER
, siendo las celdas arriba y derecha, arriba y arriba y izquierda. Y será el resultado de la función que estoy a punto de definir, que es una función en cadenas de tres caracteres. La "parte superior" de X
es QW
, o un espacio que llena la celda inexistente / faltante .
Ahora, para la función divertida ! Llamo a esta secuencia la secuencia XOROR por una razón. Sea A
el código de char de la celda superior izquierda, el código de char de B
la celda anterior y el código de char de la celda C
superior derecha. Entonces, la célula resultante es el personaje cuyo charCode es (A XOR B) OR C
, es decir, (A^B)|C
. (Si un valor resultante es mayor que 126, entonces se establece en (CHARCODE % 127) + 32
. No se hace nada si un valor es menor que 32.) Aquí hay un ejemplo de la semilla 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
Y podemos continuar por un tiempo más adelante. Esta modificación de la cadena se llama secuencia XOROR.
Objetivo Debe escribir un programa o función que realice una de las siguientes tareas:
- Dada una cadena
s
y un númeron >= 0
,n
genera la th cadena en la secuencia XOROR con semillas
,n = 0
siendo la primera transformación de la cadena. - Dada una cadena
s
, genera (para programas) o genera (para funciones / generadores) un flujo infinito de la secuencia XOROR con semillas
. Puede optar por detenerse si la secuencia se repite, pero esto no es necesario.
s
siempre consistirá en caracteres ASCII imprimibles, desde espacio hasta tilde más pestañas (sin líneas nuevas).
Este es un código de golf , por lo que gana el programa más corto en bytes.
o
s hacen que parezca una fiebre zerg .
127%127+32==32
.
n=0
no es la cadena original?
(d^!)|(space)
. En cuanto a su segunda pregunta, se realiza (CHAR%127)+32
después de que se realiza el XOROR.