我怎样才能生成一个所有的提特罗米诺的列表?
或者,更一般地说,我怎样才能产生一个子集的多胺限制到一些细胞?
最佳答案
有很多方法可以做到这一点。我发现一个很好的选择是递归地、更普遍地考虑它特别地:
单个矩形是1-omino。
对于任何n-omino,您可以通过将一个块放在n-omino的任何块附近来创建(n+1)omino。
这为您提供了一种递归的方法来列出所有可能的n-omino。不过,您需要小心,因为这将生成同一个n-ominos的多个旋转和平移您可以通过选择一些参考坐标系,然后平移n-omino,使其始终与该系统的轴齐平来解决此问题。一旦你完成了这项工作,你就可以生成所有的旋转,只需围绕轴旋转产生的n-omino,然后将其转换回标准位置。