如何生成所有Tetrominos列表? 或者,更一般地说,如何生成限制在多个细胞中的多联骨牌子集?
答案 0 :(得分:5)
有很多方法可以做到这一点。我发现一个很好用的选择是递归地考虑它并且更普遍。特别是:
这为您提供了一种列举所有可能的n-ominos的递归方式。但是,您需要小心,因为这将生成相同n-ominos的多个旋转和平移。您可以通过选择一些参考坐标系,然后平移n-omino来使其始终与该系统的轴齐平来解决此问题。一旦你开始工作,你可以通过围绕轴旋转产生的n-omino,然后将其转换回规范位置来生成所有旋转。
答案 1 :(得分:2)
N-omino所需的最大网格是NxN。生成所有内容然后排除轮换和翻译。
您可以将其视为N-1步骤中的路径跟踪算法。如果从网格的左上角单元格开始,只从那里向右或向下移动,则可以避免大多数平移和旋转。如果我没有弄错的话,唯一剩下的就是同构的N- ominomin。例如。路径Right-Down-Left制作的tetromino与Down-Right-Up相同。
答案 2 :(得分:1)
Tetrominos是形状。计算机没有直接的形状表示,它们将数字表示为二进制信号。您,程序员,确定您希望如何将形状表示为数字。它们可以存储为位图,字符串,枚举......
如果你想要特别的帮助,你必须写一个更清晰的问题。
我也很好奇你为什么要生成 7个已知的,不变的形状的列表。如果您正在编写俄罗斯方块游戏,您可以将这些7个形状硬编码为变量,常量或图像,而不是生成它们。