首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能生成一个包含所有Tetrominos的列表?

我怎样才能生成一个包含所有Tetrominos的列表?
EN

Stack Overflow用户
提问于 2011-01-24 11:57:40
回答 3查看 1.7K关注 0票数 3

我怎样才能生成一个包含所有Tetrominos的列表?或者,更广泛地说,我如何才能生成限制在多个细胞中的多聚体的子集?

EN

回答 3

Stack Overflow用户

发布于 2011-01-24 12:05:53

有很多方法可以做到这一点。我发现的一个很好的选择是以递归的方式和更一般的方式考虑它。特别是:

  1. 单个矩形是1-omino。
  2. 对于任何n-omino,您可以通过将一个块与n-omino中的任何块相邻来创建(n+1)-omino。

这为您提供了一种递归方式来列出所有可能的n-omino。不过,您需要小心,因为这将生成相同n-ominos的多次旋转和平移。您可以通过拾取一些参考坐标系,然后平移n-omino以使其始终与该系统的轴齐平来修复此问题。一旦你得到了工作,你就可以生成所有的旋转,只需旋转产生的n-omino围绕轴,然后将其转换回规范位置。

票数 5
EN

Stack Overflow用户

发布于 2011-01-24 12:04:57

N-omino所需的最大网格是NxN。全部生成,然后排除旋转和平移。

您可以将其视为N-1步中的路径跟踪算法。如果从网格的左上角单元格开始,并且只从那里向右或向下移动,您将避免大多数平移和旋转。如果我没记错的话,剩下的只有同构的N-ominones。例如,路径Right-Down-Left所制作的tetromino与Down-Right-Up相同。

票数 2
EN

Stack Overflow用户

发布于 2011-01-24 12:01:27

四头牛是形状。计算机没有形状的直接表示,它们将数字表示为二进制信号。作为程序员,您可以决定如何将形状表示为数字。它们可以存储为位图、字符串、枚举...

如果你需要特定的帮助,你必须写一个清晰得多的问题。

我也很好奇为什么你想要生成一个包含7个已知的、不变的形状的列表。如果你正在写一个俄罗斯方块游戏,你会在某个地方硬编码这7个形状,作为变量、常量或图像,而不是生成它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4778493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档