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

我考虑使用4个矩阵(一个用于nord,一个用于sud,一个用于西侧,一个用于东侧)和一个数字用于颜色。Nord(i,j),West(i,j),East(i,j),Sud(i,j)描述网格上的正方形i,j。我必须考虑哪些约束?
发布于 2018-04-06 20:26:15
由于这听起来像是家庭作业,让我只概述一个有效的模型:
将每种给定的瓦片类型描述为五元组(Type,N,E,S,W),其中Type是这种瓦片类型的标识符,N,E,S,W是北、东、南和西边的颜色。对于每种类型的平铺,有四个这样的元组用于不同的旋转。
用n x m个相似的元组(Type,N,E,S,W)表示网格,其中Type的范围是tile类型标识符,N,E,S,W的范围是颜色。
然后,您需要三种类型的约束,所有这些约束都应该可以很容易地在Numberjack (以及其他有限域风格的解算器)中表示:
every of the >每个格网元组都匹配其中一个切片描述符tuples
https://stackoverflow.com/questions/49645410
复制相似问题