问题标签 [conways-game-of-life]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 将位图/位数组渲染到 2d 平面的最佳方法(使用 OpenGL)
好的,这就是我所拥有的。我有一个 1d 位图(或位数组、位集、位串,但我现在称它为位图)包含来自康威生命生成游戏的活状态或死状态。at 的单元格(x, y)
由 at 的位表示y * map_width + x
。
现在我的生活游戏“引擎”开始工作了,如果我现在可以渲染一些图形的东西就好了。我认为 OpenGL 将是一个不错的选择,但我不知道我应该如何开始,以及是否有任何特定的函数或着色器(我对着色器一无所知)可以有效地将位图渲染到具有黑色 'n 的 2d 平面白色像素。
如果您现在认为“不,您的白痴 opengl 很糟糕……”,请随意说出来,我愿意进行更改。
编辑
我忘了说我使用了一个紧凑的位数组,每个字节存储 8 位,并使用掩码来检索这些字节。这是我手工制作的图书馆东西:
wolfram-mathematica - 优化生活游戏
我正在用数学编写一个生命游戏程序但是有一个警告,我需要能够将复制规则应用于一定百分比的单元格,我想尝试使用 MapAt 的新方法,但 liveNeighbors 不起作用elementwise,如果不完全按照我之前所做的(很多混乱的索引),我想不出一种修复它的方法,有人有什么建议吗?(我假设这会比下面列出的旧方法更有效,如果不是请告诉我,我只是一个初学者!)。
我正在尝试做的事情:
我已经做了什么:
谢谢!
terminology - 康威生命游戏的定义/元胞自动机
这实际上不是一个编程问题,而是编程社区可以帮助我解决的一个问题。
我需要写一个简短的句子,强调元胞自动机/康威的生活游戏对普通公众的影响或目的,以激发我对它的改编的兴趣。
我写了这个,这样对吗,我能说得更好吗?
尽管它的名字,康威的生命游戏不是游戏,而是显示混沌理论中出现的数学模型。
我知道这有点错误,但我不是科学家或数学家!
请帮忙。
谢谢
java - 生命分配游戏
我的董事会正确地检测到少于 3 个邻居的组并将它们杀死,但似乎没有检测并产生具有 3 个邻居的单元格。
有什么想法吗?
如果我没有提供足够的信息,请告诉我,我可以粘贴更多代码,但我认为这是所有相关部分。
提前感谢您提供的任何建议。
这是请求的生命周期方法。
我附上了 LifeGUI 以供参考,但此代码是提供的,并不打算让我更改。
delphi - 排除重复项的快速线性列表
我有以下代码:
以上是计算康威生命游戏的测试程序的代码片段。
代码需要尽可能快。为此,我正在尝试不同的方法。
它穿过一个活跃的单元格,查看哪些单元格是活跃的,然后将它们放在堆栈上。
接下来,它处理堆栈上的项目并查看哪些单元格已更改。
如果一个单元格发生了变化,它会将这些变化更新到网格中以供下一代使用。
我将单元格存储在 32 位基数(4 位 Y,8 位 X)中,并且 P(偶数)代相对于 Q(奇数)代偏移 1,1 像素,这样我只需要考虑 3 个邻居而不是8.
问题
我想摆脱网格,我只想处理堆栈。
如何实现消除重复的堆栈?
请注意,它需要尽可能快,并且我不会使用肮脏的技巧来获得它。
optimization - 调整 MIT 的 bitcount 算法以并行计算单词?
我想使用著名的 MIT 位计数算法的一个版本,使用 SSE2 指令计算康威生命游戏中的邻居。
这是 c 中的 MIT 位计数,扩展到计数位计数 > 63 位。
这是帕斯卡的一个版本
我正在寻找并行计算此结构中的位。
注意这个结构中间有 16 位需要查找。我想使用 SSE2计算中间 16 位中的每一位的邻居计数。为了做到这一点,我将切片 A 放入 XMM0 低位双字中,切片 B 放入 XXM0-dword1 等。
我将 XMM0 复制到 XMM1 并屏蔽XMM0 的低位字中的012-456-89A
位5
,对 XMM0 的字1 执行相同操作,等等。使用不同的切片和掩码来确保 XMM0 和 XMM1 中的每个单词都包含不同像素的邻居。
问题
如何调整 MIT-bitcount 以在每个 XMM 字中得到每个字/像素的位计数?
备注
我不想使用查找表,因为我已经有了这种方法,我想测试一下 SSE2 是否会通过不需要对查找表进行内存访问来加快进程。
使用 SSE 汇编的答案将是最佳的,因为我在 Delphi 中对此进行了编程,因此我使用的是 x86+SSE2 汇编代码。
c# - 程序占用太多内存
我正在使用 WPF 开发康威生命游戏的模拟器。
由于某种原因,有时程序会占用高达 400,000K 的内存(当我非常快地绘制很多单元格时)。
如何减少内存使用和/或减少由此引起的滞后。
编辑 1: 主窗口代码: http: //pastebin.com/mz0z7tBu
网格类: http: //pastebin.com/ZHX1WBuK
细胞结构:
编辑 2: 我将尝试解释程序结构:单元格是一个结构,它包含 int 类型的 AutoProperty 邻居和 bool 类型的 AutoProperty IsAlive。
CellGrid 是一个包装二维单元格数组的类。每次迭代,每个 Cell 的 Neighbors 属性都会更新以包含活着的 Neighbors 的数量,然后将每个 Cell 的 IsALive 设置为 true 或 false,这取决于邻居的数量和之前的 IsAlive 状态。
MainWindow 类有一个 CellGrid 类型的对象。它将网格渲染到屏幕上。
编辑3:
XAML: http: //pastebin.com/Zp3dr8zc
资源.xaml:
perl - Perl 中的生命游戏——从 C++ 转换代码的问题
我最近开始尝试将我编写的康威生命游戏的 C++ 代码复制到 Perl 中,并且几乎是逐字复制。但是,C++ 代码的输出与 Perl 的输出有很大不同。C++ 代码运行完美,但 Perl 代码给出了奇怪的行为。任何看过生命游戏的人都应该知道,以下游戏状态很奇怪:
每个[]
代表一个活细胞,而任何两个空白代表一个死细胞。奇怪的部分是在许多运行代码的尝试中出现的水平线和垂直线。我还没有看到预期的行为(滑翔机、振荡器等)。
我的代码如下;我将不胜感激任何帮助/澄清。提前致谢!
binary - I want to find the binary operations that transform an input to an output
Given the input and the output:
Are there any operations that can be performed on the rows / cols to get the result? For example, my best try was
((Y AND NOT Y-1) XOR (Y AND NOT Y+1)) OR ((X AND NOT X-1) XOR (X AND NOT X+1))
When no row/col exist, it is assumed to be false. A demonstration of my try:
For Y:
For X:
OR'ing those 2 results:
As you can see, it is almost identical as the output, but the COL 3, ROW 5 is 0 instead of 1. Is there any way I can do other operation to take that bit into account?
Thanks in advance.
java - 如何以编程方式调用作为独立任务运行的按钮?
我已经在 Java swing 中实现了 Conway 的生命游戏问题。一切正常。正如您在下面的屏幕截图中看到的那样,只要单击“Tick”按钮,游戏就会进入下一个生命形式。现在,我计划在“勾选”按钮旁边添加一个“自动播放”按钮。这种自动播放的目的很简单。当我点击它时,自动操作应该会继续进行,就好像我每隔 1 秒按一次刻度按钮一样。
我试过这个。但这似乎阻止了所有其他操作。如何在单独的线程中执行此操作?一个小代码片段会让我继续前进。