用于网格排列和平铺的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第三方库


热门话题
JavaPax考试:从非标准Maven存储库解析Karaf特性存储库(XML文件)   java Spring启动Bean创建异常   java中将ArrayList转换为数组的方法   Android Studio的java Unity插件。   java在CheckStyle中从方法计数中排除getter和setter   HibernateJava。sql。SQLSyntaxErrorException:表/视图“序列”不存在   与命令行程序Java vs C通信   java WebView膨胀异常   java在O(n)java8流中寻找两个列表的交集   java使用Gradle运行单元测试时,最大堆大小在哪里设置?   ssl加载java应用程序(CXF)内的jks文件   CI:Jenkins Git:Simple Java项目:希望在特定时间在脚本上发送消息   java根据位置更改数字   java按数值排序字符串数组   macos java版本“1.6.0_65”是否与java 6模棱两可?   Cassandra中的java时间戳