Как я могу создать список всех тетромино? - PullRequest
3 голосов
/ 24 января 2011

Как мне составить список всех тетромино? Или, в более общем смысле, как я могу создать подмножество полиомино, ограниченное количеством ячеек?

Ответы [ 3 ]

5 голосов
/ 24 января 2011

Есть много способов сделать это.Один вариант, который я нашел, работает хорошо, это думать об этом рекурсивно и более широко.В частности:

  1. Один прямоугольник - это 1-омино.
  2. Для любого n-омино вы можете создать (n + 1) -омино, поместив блок рядом слюбой из блоков n-omino.

Это дает вам рекурсивный способ перечисления всех возможных n-ино.Вы должны быть осторожны, так как это будет генерировать несколько поворотов и переводов одного и того же n-ино.Вы можете исправить это, выбрав некоторую систему координат и затем перевести n-omino так, чтобы оно всегда находилось на одном уровне с осями этой системы.Получив эту работу, вы можете генерировать все повороты, просто вращая полученное n-омино вокруг осей, а затем переводя его обратно в каноническое положение.

2 голосов
/ 24 января 2011

Самая большая сетка, которая вам нужна для N-omino, - это NxN. Создайте все, затем исключите повороты и переводы.

Вы можете думать об этом как о алгоритме следования по пути в N-1 шагах. Если вы начнете с верхней левой ячейки сетки и оттуда будете двигаться только вправо или вниз, вы избежите большинства перемещений и поворотов. Если я не ошибаюсь, то останутся только изоморфные N-омононы. НАПРИМЕР. Тетромино, созданное по траектории вправо-вниз-влево, такое же, как путь вниз-вправо-вверх.

1 голос
/ 24 января 2011

Тетромино - это формы.Компьютеры не имеют прямого представления форм, они имеют представления чисел в виде двоичных сигналов.Вы, программист, определяете, как вы хотите представить форму в виде числа.Они могут храниться в виде растровых изображений, строк, перечислений ...

Вам нужно будет написать более понятный вопрос, если вам нужна конкретная помощь.

Мне также любопытно, почему вы хотите генерирует список из 7 известных неизменных фигур.Если бы вы писали игру «Тетрис», вы бы где-то жестко закодировали эти 7 фигур в виде переменных, констант или изображений, а не генерировали их.

...