假设我们有一些多米诺骨牌,并且想唯一地标识它们,但是多米诺骨牌可以旋转,因此盲目地对它们进行散列将不会为我们提供相同的指纹及其旋转(通常)。
例如,如果我们有L-tetromino
x
x
xx
我们希望它具有与以下任何一个相同的指纹:
xx
x x xxx
xxx , x or x
注意:我们只允许在平面上旋转(即,它们是单面的多米诺骨牌),因此以下多米诺骨牌将是不同的:
x
x
xx
挑战
对于这一挑战的任务是实现一个指纹函数/程序,其需要一个布尔/ 列出/串-valued矩阵/列表/ ..编码四角并返回一个字符串-一个四角的指纹。对于所有可能的旋转,指纹必须相等(通常为4)。
输入输出
- 和(即没有空四角)
- 您可以确保尽可能小(即将所有修剪为适合和
- 您可以确保输入为
- 只需连接
- 没有孔
- 输出必须是一个字符串,该字符串对于多米诺骨牌的每次可能旋转都相同
例子
这是一些等效类,对于每个类,指纹必须相同;对于来自两个不同类的任何两个多胺,它们必须不同。
示例中的左旋四聚体的旋转:
[[1,0],[1,0],[1,1]]
[[0,0,1],[1,1,1]]
[[1,1],[0,1],[0,1]]
[[1,1,1],[1,0,0]]
J-tetromino:
[[0,1],[0,1],[1,1]]
[[1,1,1],[0,0,1]]
[[1,1],[1,0],[1,0]]
[[1,0,0],[1,1,1]]
单位多胺:
[[1]]
阿栏:
[[1,1,1,1,1]]
[[1],[1],[1],[1],[1]]
阿角:
[[1,1],[1,0]]
[[1,0],[1,1]]
[[0,1],[1,1]]
[[1,1],[0,1]]
W-戊胺
[[1,0,0],[1,1,0],[0,1,1]]
[[0,0,1],[0,1,1],[1,1,0]]
[[1,1,0],[0,1,1],[0,0,1]]
[[0,1,1],[1,1,0],[1,0,0]]
""
(空字符串),是否满足所有要求?