【发布时间】:2025-12-11 18:10:02
【问题描述】:
挑战:编写实现 John H. Conway 的生命游戏元胞自动机的最短程序。 [link]
编辑:经过大约一周的比赛,我选出了一个胜利者:pdehaan,以一个击败 Matlab 解决方案perl 中的字符。
对于那些没有听说过生命游戏的人,您可以选择一个网格(理想情况下是无限的)方形单元格。细胞可以是活的(填充的)或死的(空的)。我们通过应用以下规则来确定哪些细胞在下一步中还活着:
- 任何活细胞少于两个的活细胞都会死亡,好像是由于人口不足造成的。
- 任何有超过三个活邻居的活细胞都会死亡,就像过度拥挤一样。
- 任何有两三个活邻居的活细胞都可以传给下一代。
- 任何只有三个活邻居的死细胞都会变成活细胞,就像通过繁殖一样。
您的程序将读取指定为命令行参数的 40x80 字符 ASCII 文本文件,以及要执行的迭代次数 (N)。最后将N次迭代后系统的状态输出到ASCII文件out.txt中。
这是一个使用相关文件运行的示例:
in.txt:
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
..................................XX............................................
..................................X.............................................
.......................................X........................................
................................XXXXXX.X........................................
................................X...............................................
.................................XX.XX...XX.....................................
..................................X.X....X.X....................................
..................................X.X......X....................................
...................................X.......XX...................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
迭代 100 次:
Q:\>life in.txt 100
结果输出 (out.txt)
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
..................................XX............................................
..................................X.X...........................................
....................................X...........................................
................................XXXXX.XX........................................
................................X.....X.........................................
.................................XX.XX...XX.....................................
..................................X.X....X.X....................................
..................................X.X......X....................................
...................................X.......XX...................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
规则:
- 您需要使用文件 I/O 来读取/写入文件。
- 您需要接受输入文件和迭代次数作为参数
- 需要生成指定格式的out.txt(如果存在则覆盖)
- 您不需要处理板的边缘(环绕、无限网格等)
- 编辑:您确实需要在输出文件中包含换行符。
获胜者将由字符数决定。
祝你好运!
【问题讨论】:
-
这是一个很棒的代码高尔夫!我完全相信它属于 SO。几天前我在 APL 中发现了一个很棒的实现:youtube.com/watch?v=a9xAKttWgP4
-
可以接受的想法,但你需要加强它。 meta.stackexchange.com/questions/24242/…
-
相对受欢迎程度对于高尔夫来说是一个不好的衡量标准。 perl 总是得到很多选票,即使它不是最短的,即使它不符合规范。你应该坚持字符数。语言更冗长的人仍然可以相互竞争
-
输入文件中是否有换行符?
-
^ 输出文件中是否需要它们?
标签: language-agnostic code-golf rosetta-stone conways-game-of-life