【发布时间】:2021-03-13 09:40:04
【问题描述】:
这有点像数学问题,但也有点像编码问题,所以我想我会把它贴在这里。我正在用python3编写。
假设您有一个 3 x 3 的网格:
O O O
O O O
O O O
现在我有一个模式,例如A B。我想找到将这种模式放置到 3x3 网格上的所有方法。不允许旋转。对于这个特定示例,所有解决方案都是:
A B O | O A B | O O O | O O O | O O O | O O O
O O O | O O O | A B O | O A B | O O O | O O O
O O O | O O O | O O O | O O O | A B O | O A B
图案可以有从 1x2/2x1 到 3x3 的任何尺寸。我不能完全围绕制定一个可以做到这一点的算法。 A 和 B 之类的键可能会出现 1 到 9 次,我不知道它们有什么名字。
【问题讨论】:
-
您的示例的工作方式只是在网格行上循环 - height(pattern) + 1,然后在网格列上循环 - len(pattern) + 1
-
在这个可以工作的具体示例中,但我也可能有 2x3 或 2x2 模式。甚至是 3*3 模式,其中有空槽
标签: python-3.x algorithm pattern-matching