【问题标题】:Python cellular automata to solve a 'spreading' simulationPython 元胞自动机解决“传播”模拟
【发布时间】:2018-10-11 14:53:39
【问题描述】:

所以,我有一个包含 50 行和列的嵌套列表(嵌套列表中有 50 个列表)。在嵌套列表中有随机的 '1' 、 '0' 和 ''。我希望一开始,随机的“0”变成“1”,而“1”将其他“0”变成1。此外,在一个时间步之后,我希望“1”将围绕它的所有“0”转换为“1”。我在网上看到元胞自动机是解决这个问题的一种方法,但我不知道不使用 numpy 怎么做。在图片所示的示例中,TRUE 将表示为“1”,而 FALSE 表示为“0”。 load_bushfire 返回“1”、“0”和“”的嵌套列表,它们是表示地图的像素。无需可视化地图,因为我有它的代码。有什么建议么 ?

【问题讨论】:

  • 嗨 Ryan,如果您提供几个示例,回答您的问题会更简单,因为很难理解实际的转换。听起来像元胞自动机是正确的选择。您可以为您的问题添加更多信息吗?
  • Artem,我已经编辑了附加信息。我希望你能帮我解决这个问题。

标签: python cellular-automata


【解决方案1】:

要遍历元素周围的所有像素a[ i ],[ j],模式是a[i+k][j+l] for k in [-1, 0, 1] for l in [-1, 0, 1 ] if k or l,我猜你必须检查边界。

对于特别复杂的规则,您可能需要两个嵌套列表(矩阵)以获得更公平的模拟。在每一步,您都将根据您拥有的任何规则根据先前的计算新的嵌套列表。有关示例,请参见 https://github.com/mwharrisjr/Game-of-Life 。处理完每个步骤后,您将呈现新的嵌套列表。就个人而言,我认为使用三元逻辑会更好。燃料、无燃料、火(蓝、白、红)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2012-05-04
    • 1970-01-01
    • 2020-07-25
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多