用于网格排列和平铺的python库。

tilings的Python项目详细描述


TravisCoverallsPyPIhttps://img.shields.io/pypi/l/Tilings.svghttps://img.shields.io/pypi/pyversions/Tilings.svgRequirements Status

tilings是一个python库,用于处理网格排列和 瓷砖。

安装

要在系统上安装tilings,请运行:

pip install tilings

也可以在开发模式下安装tilings来工作 在源代码上,在这种情况下,在克隆后运行以下命令 存储库:

./setup.py develop

运行单元测试:

./setup.py test

什么是网格排列和平铺?

我们将在这里简要介绍我们的定义,有关更多详细信息,请参见 Christian Bean’s PhD thesis

agridded permutation是一对(π, P),其中π是 置换和P是一个单元元组,称为位置 表示在网格上绘制π点的单元格。让 G表示所有网格置换的集合。网格的包容 置换的定义与置换的包含相同,除了 包括细胞的保存。

一个tiling是一个三元组T = ((n, m), O, R),其中nm 是正整数,O是一组称为 obstructions,和R是一组网格置换 称为requirements

我们说网格置换避免了一组网格置换 避免集合中的所有置换,否则它包含 准备好了。因此,包含一个集合意味着在 准备好了。平铺Grid(T)上的网格排列集是 在n x m网格中避免O和 在R中包含每个集合r

使用平铺

一旦安装了tilings,就可以通过python脚本导入它 或交互式python会话,就像任何其他python库一样:

>>>fromtilingsimport*

从中导入*将为您提供“griddedperm”, “障碍”、“要求”和“瓷砖”类。

如上所述,网格置换是一对(π, P),其中π是 置换和P是单元的元组。排列假定为 成为permutapython库中的Perm。不是所有的元组 单元格是给定置换的有效位置。这个可以检查 使用contradictory方法。

>>>frompermutaimportPerm>>>gp=GriddedPerm(Perm((0,2,1)),((0,0),(0,0),(1,0)))>>>gp.contradictory()False>>>gp=GriddedPerm(Perm((0,1,2)),((0,0),(0,1),(0,0)))>>>gp.contradictory()True

一个Tiling是用一个Obstruction和一个 可访问的Requirement列表。假设所有的细胞 在某些障碍物或要求中提到的是空的。你可以打印 平铺以获取创建的平铺的概述。在这个例子中,我们 具有对应于非空排列的平铺,以避免 123

>>>obstructions=[Obstruction.single_cell(Perm((0,1)),(1,1)),...Obstruction.single_cell(Perm((1,0)),(1,1)),...Obstruction.single_cell(Perm((0,1)),(0,0)),...Obstruction.single_cell(Perm((0,1,2)),(2,0)),...Obstruction(Perm((0,1,2)),((0,0),(2,0),(2,0)))]>>>requirements=[[Requirement.single_cell(Perm((0,)),(1,1))]]>>>til=Tiling(obstructions,requirements)>>>print(til)+-+-+-+||||+-+-+-+|\||1|+-+-+-+1:Av(012)
\:Av(01):pointCrossingobstructions:012:(0,0),(2,0),(2,0)Requirement0:0:(1,1)>>>til.dimensions(3,2)>>>sorted(til.active_cells)[(0,0),(1,1),(2,0)]>>>til.point_cellsfrozenset({(1,1)})>>>sorted(til.possibly_empty)[(0,0),(2,0)]>>>til.positive_cellsfrozenset({(1,1)})

平铺上有许多可用的方法。你可以生成 满足构造和要求的网格排列 使用gridded_perms_of_length方法。

>>>foriinrange(4):...forgpintil.gridded_perms_of_length(i):...print(gp)0:(1,1)10:(1,1),(2,0)01:(0,0),(1,1)210:(1,1),(2,0),(2,0)201:(1,1),(2,0),(2,0)120:(0,0),(1,1),(2,0)021:(0,0),(1,1),(2,0)102:(0,0),(0,0),(1,1)

还有许多其他的方法和特性。其中许多 到tilescope算法,在Christian Bean’s PhD thesis中讨论。

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

推荐PyPI第三方库


热门话题
java JMeter未正确解码base64将导致生成空白PDF   java我如何添加javax。媒体jai.*项目中的包?   java是我的公式错了还是有任何一行代码使它错了?   java Android:后退按钮跳过webView   使用Java CDI Weld重新连接到对话   带有表粘贴的java网格web组件   java在JTable中编辑时防止重复值   java Jersey获取摘要或基本HTTP身份验证用户和密码   java如何检查Android EditText整数值?   html如何使用Java从网站中提取动态字符串/单词   java如何解决使用Boilerpipe时的ConnectException错误?   java获取hadoop名称节点格式   Java中占位符解析器的解析   JavaSpringWebhook端点获取整个主体以及pojo   Java:将颜色字符串值转换为十六进制值   捕捉光标时受帧率影响的java LibGDX鼠标灵敏度   java Spring MVC实现大型应用程序DTOs/ViewModels的最佳实践?   基于特性的java模块化安卓应用   java Spring控制器请求参数作为来自jQuery get()的POJO