为了进行实验,我(很久以前)实施了康威的生命游戏 http://en.wikipedia.org/wiki/Conway's_Game_of_Life(而且我知道this https://stackoverflow.com/questions/1823/writing-a-conways-game-of-life-program相关问题!)。
我的实现是通过保留 2 个布尔数组来实现的,分别代表“最后状态”和“正在更新的状态”(这两个数组在每次迭代时交换)。虽然这相当快,但我经常想知道如何优化它。
例如,一个想法是在迭代 N 时预先计算以下区域:could在迭代(N+1)时进行修改(这样,如果一个单元不属于这样的区域,则在迭代(N+1)时甚至不会考虑对其进行修改)。我知道这是非常模糊的,我从来没有花时间去详细了解......
您对如何优化(速度)生命游戏迭代有任何想法(或经验!)吗?
我将引用我在另一个问题中的答案,因为我提到的章节有一些非常有趣且经过微调的解决方案。是的,一些实现细节是用 C 和/或汇编语言编写的,但大多数情况下,算法可以用任何语言运行:
章节17 http://www.jagregory.com/abrash-black-book/#chapter-17-the-game-of-life and 18 http://www.jagregory.com/abrash-black-book/#chapter-18-its-a-plain-wonderful-life的
迈克尔·阿布拉什图形
程序员黑皮书 http://www.jagregory.com/abrash-black-book/是其中之一
我读过的最有趣的书
有。这是一堂思考课
在箱子外面。全书是
真的很棒,但是最终优化了
生命游戏的解决方案是
令人难以置信的编程片段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)