与Numberjack的色的正方形难题

时间:2018-04-04 07:42:44

标签: python constraints constraint-programming constraint-satisfaction

我要解决这个问题,我必须用Numberjack解决这个问题,这是CSP中python的一个库。 我们有n x m个正方形,边有彩色。这些正方形必须以n×m网格排列,使得正方形的相邻边具有相同的颜色。方块可以旋转和移动。一个例子:

enter image description here

我想过使用4个矩阵(一个用于nord,一个用于sud,一个用于西,一个用于东侧)和一个数字用于颜色。 Nord(i,j),West(i,j),East(i,j),Sud(i,j)描述网格上的方形i,j。 我必须考虑哪些限制?

1 个答案:

答案 0 :(得分:0)

这听起来像是家庭作业,让我概述一个有效的模型:

将每种给定类型的图块描述为五元组(Type,N,E,S,W),其中 Type是此类磁贴的标识符,N,E,S,W是 北,东,南,西两侧的颜色。对于每种类型的瓷砖, 有四个这样的元组用于不同的旋转。

用n x m个类似元组(Type,N,E,S,W)表示网格,其中 Type范围超出了图块类型标识符,N,E,S,W覆盖了颜色。

然后你需要三种类型的约束,所有这些约束都应该可以在Numberjack(以及其他有限域样式求解器)中轻松表示:

  • 每个网格元组都匹配一个tile描述符元组
  • 相邻颜色匹配
  • 网格包含每种类型的正确数量的图块