生命弦乐游戏
生命游戏的宇宙是一个由方格组成的无限二维正交网格,每个方格 它处于两种可能的状态之一:活着或死亡。每个细胞 与它的八个邻居相互作用,这些邻居是 水平、垂直或对角相邻。在每一步中 时间,会发生以下转变:
- 任何少于两个活邻居的活细胞都会死亡,就像是由于人口不足造成的。
- 任何有两个或三个邻居的活细胞都会延续到下一代。
- 任何有超过三个邻居的活细胞都会死亡,就像过度拥挤一样。
- 任何恰好有三个活邻居的死细胞都会变成活细胞,就像通过繁殖一样。
实现计算新一代生命游戏的方法。 该方法接收格式为“000_000_000”的字符串, 表示由 0(死细胞)和 1(活细胞)组成的矩阵 NxM。
并返回一个格式相同的字符串“000_000_000”,代表 代表下一代的同等大小的数组。细胞外 该阵列必须被视为已死亡。诞生的细胞 数组边界应该被忽略(宇宙永远不会超出数组边界) 初始 NxM 网格)。
示例
- 输入:
"000_111_000"
- 输出:
"010_010_010"
PS。我并不是要求任何实施,只是帮助理解这一点。一旦我明白实施只是一个细节。
只要遵守规则即可。
该字符串代表一个 2D 网格
"000_111_000"
是
A | B | C | |
---|---|---|---|
1 | 0 / 死了 | 0 / 死了 | 0 / 死了 |
2 | 1 / 直播 | 1 / 直播 | 1 / 直播 |
3 | 0 / 死了 | 0 / 死了 | 0 / 死了 |
(为了清晰起见,添加了坐标:A1 位于左上角,值为
0
/dead,B2 位于中间,值为 1
)
查看规则列表和每个单元格:
0
保持不变0
0
保持不变1
1
1
0
保持不变0
0
保持不变这会导致
A | B | C | |
---|---|---|---|
1 | 0 / 死了 | 1 / 直播 | 0 / 死了 |
2 | 0 / 死了 | 1 / 直播 | 0 / 死了 |
3 | 0 / 死了 | 1 / 直播 | 0 / 死了 |
反过来,当编码回字符串时,与输入相匹配
"010_010_010"