一个模拟简单细胞自动机的小程序包。

pycells的Python项目详细描述


gliderpyCells

最近很无聊的时候,我又开始玩模拟细胞自动机了。 但是为了比平时多挑战一下自己,我设置了三个具体的限制,让这件事变得更加困难 比我以前习惯的:

  1. 模拟函数应该能够处理n维规则和状态。在
  2. 规则应该是整数。在
  3. 状态应该用整数表示,利用整个状态由 可以展平的n维布尔数组。在

我给自己增加的另一个负担是实施多种独特风格的规则:

  1. 基于模式的规则,例如流行的110或30。在
  2. 邻居计数规则,如康威的生活游戏。在

使用

从PyPi

  1. 运行pip install pycells
  2. 运行pycells并检查您有哪些选项

来源

  1. 克隆此回购
  2. 使用python> 3.7./requirements.txt设置virtualenv
  3. 运行python simulate.py

我实现了一个cli和一个基于文件的模拟配置系统。cli是结构化的 具体如下:

$ python simulation.py

Usage: simulate.py [OPTIONS]

  Simulate n-dimensional cellular automata using some of the most common
  methods.

Options:
  -p, --preset [conway|elementary]
                                  simulation preset to use
  -f, --file FILENAME             file to load simulation config from
  -d, --dimensions TEXT           dimensions of the simulation, format:
                                  N[xN[xN[...]]
  -m, --method [count|pattern]    simulation method
  -r, --rule INTEGER              rule to simulate
  -i, --iterations INTEGER        iterations to simulate
  -n, --neighborhood-radius INTEGER
                                  neighborhood radius to use
  -o, --out FILE                  path to save the output to
  --initial-state INTEGER         initial simulation state
  --skip-initial-state            skip the initial state
  --parallelize                   enabled parallel calculation of cells per
                                  state transition
  --scaling INTEGER               scaling to apply to output
  --format [gif|png|npy|txt]      format to output as, this skips the default
                                  which is to simply use the most suitable for
                                  the given number of dimensions
  --help                          Show this message and exit.

要使用基于文件的配置选项,只需编写一个包含所有 必要的参数。对于一些示例,请查看./examples目录。 如果你想在这些文件中写二进制数,我已经在yaml解析器中添加了两个标记 !b和{}(反面)。使用这些文件非常简单:

^{pr2}$

使用预定义的预置也是类似的,使用它们只需使用-p选项 并填写其余未定义的参数:

python simulate.py -p conway -d 64x64 -i 32

通知

虽然这个实现现在可以处理n维状态,但我只实现了 一维和二维自动机的图形可视化。如果你想创建你自己的可视化 您可以指定一种基于文本的格式(例如txtnpy)。在

示例

对于更多示例,请查看呈现的输出here。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JSON解析(700 KB文件)与Jackson一起耗时30秒   传入参数错误的Java泛型   java测试我的UserService类,但需要模拟一个同时被调用的方法   java Selenium Webdriver sendKeys在IE11 32位中输入值,然后将其删除   具有旧语义的java Invokespecial:调用其他类的实例方法   java如何从给定字符串获取描述中的预期输出   java JavaFX哪种事件侦听器方法更有效?   java使用AJAX调用输出存储为BLOB的PDF文件内容,而不创建文件   java无法配置EntityManagerFactory JPA   java无法单击listview项来更改活动   java为什么UriComponentsBuilder忽略空查询参数?   java加速CoreNLP情感分析   java如何在新的PlayServicesArby中实现抽象类EndpointDiscoveryListener和ConnectionRequestListener?   java如果我的类已经在扩展另一个类,如何使用unicastremoteobject。。。?   JavaJSPinnerGetValue返回相同的值   mongodb和springboot中具有条件的java计数数组对象   java如何将JavaFX11项目导出到Jar中?   JavaSpring验证字符串值是一个JSON