细胞自动机确实令人着迷。通常谈论的是二进制的,即可以用数字表示的那些。但是,在我看来,这些做法已经死了。三元CA更有趣,但是我们要考虑所有ASCII!那会是多么有趣!
我将为您介绍一个简单的决定规则,而不是为每个角色决定一个规则集。为了决定下一代产品,我们看一下三个“顶部”细胞,就像细胞自动机一样。观察一个例子:
QWERTY
X Y Z
的“顶部” Y
是WER
上方,右侧,上方,上方和左侧的单元格。Y将是我要定义的函数的结果,该函数是三字符字符串的函数。的“顶部” X
是 QW
,或者是不存在/缺少的单元格中填充的空间。
现在,为乐趣功能!由于某种原因,我将此序列称为XOROR序列。让A
是左上角单元格则charCode,B
是上述细胞则charCode,并且C
是右上角的细胞则charCode。然后,将得到的细胞是其charCode为特点(A XOR B) OR C
,那就是(A^B)|C
。(如果结果值大于126,则将其设置为(CHARCODE % 127) + 32
。如果值小于32 ,则不执行任何操作。)这是种子的示例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
此后,我们可以继续进行一段时间。字符串的这种修改称为XOROR序列。
目标您将编写一个执行以下任务之一的程序或函数:
- 如果给定字符串
s
和多个n >= 0
,输出n
与种子XOROR序列个串s
,与n = 0
作为字符串的第一个转变。 - 给定一个字符串
s
,输出(对于程序)或生成(对于函数/生成器)带有种子的XOROR序列的无限流s
。如果序列重复,您可以选择停止,但这不是必需的。
s
将始终仅由可打印的ASCII字符组成,从空格到波浪号加制表符(无换行符)。
这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。
o
使它看起来像是虫族的狂奔。
127%127+32==32
。
n=0
不是原始字符串?
(d^!)|(space)
。至于第二个问题,请在执行XOROR (CHAR%127)+32
之后执行。