2024-09-28 01:24:53 发布
网友
我要用Numberjack来解决这个问题,这是一个python的CSP库。 我们有n x m的彩色边正方形。这些正方形必须以nxm网格的方式排列,使正方形的相邻边具有相同的颜色。正方形可以旋转和移动。例如:
我考虑使用4矩阵(一个用于nord,一个用于sud,一个用于west和east side)和一个数字作为颜色。Nord(i,j),West(i,j),East(i,j),Sud(i,j)描述网格上的正方形i,j。 我必须考虑哪些限制条件?在
因为这听起来像是家庭作业,让我简单介绍一个有效的模型:
将每个给定类型的图块描述为一个五元组(Type,N,E,S,W),其中 Type是此类型平铺的标识符,N,E,S,W是 北面、东面、南面和西面的颜色。对于每种类型的瓷砖, 对于不同的旋转有四个这样的元组。在
(Type,N,E,S,W)
Type
N,E,S,W
用n×m个相似元组(Type,N,E,S,W)表示网格,其中 Type范围覆盖平铺类型标识符,N,E,S,W覆盖颜色。在
然后,您需要三种类型的约束,所有这些约束都应该在Numberjack(和其他有限域样式的解算器)中易于表示:
因为这听起来像是家庭作业,让我简单介绍一个有效的模型:
将每个给定类型的图块描述为一个五元组
(Type,N,E,S,W)
,其中Type
是此类型平铺的标识符,N,E,S,W
是 北面、东面、南面和西面的颜色。对于每种类型的瓷砖, 对于不同的旋转有四个这样的元组。在用n×m个相似元组
(Type,N,E,S,W)
表示网格,其中Type
范围覆盖平铺类型标识符,N,E,S,W
覆盖颜色。在然后,您需要三种类型的约束,所有这些约束都应该在Numberjack(和其他有限域样式的解算器)中易于表示:
相关问题 更多 >
编程相关推荐