栩栩如生的细胞自动机中的每个细胞仅需要一位来表示,因为它只能是生的或死的。这意味着只有两种颜色。很无聊。
普通图像的每个像素为24位(RGB中的每个像素为8位)。这意味着在以像素为单元格的正常图像中,您可以一次模拟24个逼真的游戏!
挑战
您的任务是编写一个程序,该程序将逼真的蜂窝自动机的一代规则应用于24位深度图像(以您喜欢的任何已知格式),然后输出结果图像。
24层中的每一层都将使用相同的栩栩如生的规则集,严格在其自己的层之内。这24层不会互相影响。
也
- 零是死细胞,一个是活细胞。
- 边界条件是周期性的(形成圆环)。
- 任何图像尺寸都可以。
输入输出
您的程序需要通过stdin或命令行(或您的语言最接近的等效语言)接受3个参数:
- 输入图像文件的名称。
- 由0到8的数字组成的字符串,以递增的顺序表示新单元格的诞生时间:
- 如果数字d在字符串中,则死细胞在有d个存活邻居时会恢复活力。
- 示例:
3
正常的生命 -刚好有3个存活邻居的死细胞复活。
- 从0到8的数字字符串,以递增的顺序表示现有的单元格何时存活:
- 如果数字d在字符串中,则具有d个存活邻居的存活细胞将存活到下一代,否则它们将死亡。
- 示例:
23
正常生命-只有具有2或3个邻居的细胞才能存活到下一轮。
请注意,始终使用摩尔街区。阅读这个或这对精确什么定义了一个栩栩如生的自动机和许多有趣的规则集的更多信息。
1代以后的输出图像应显示或另存为out.png
(bmp
或其他任何形式)。
投稿
以字节为单位的最短代码获胜。
对于某些非平凡的规则集,您需要至少包含一个测试映像及其三个后继代。如果您想不出更好的方法,请使用您的头像和正常的生活规则。
如果您愿意,可以使用这种Gosper Glider Gun,其中唯一的活物在绿色的128层中(只能确保在正常的Life中工作):
强烈建议张贴有趣的序列甚至动画。