Моя попытка написать решатель тетриса --
https://github.com/nervgh/tetris-problem
Есть демо по ссылке не гитхабе
—-
1) при моделировании, старался описать 2D мир так абстрактно, чтобы часть этого кода я мог бы использовать для других проектов (например, класс Figure, по сути, представляет из себя многоугольник с фиксированным центром на плоскости)
2) каждый раз, когда кто-то открывает (или обновляет) демо-страницу, он(а) генерирует новую версию мира тетриса и новую фигуру, для которой агент тетриса (solver) пытается найти оптимальное решение
3) найденный результат представляет из себя последовательность действий, которые необходимо совершить для того, чтобы из состояния мира А попасть в (оптимальное) состояние мира Б
4) можно ли считать мое решение завершенным? Конечно, нет. а)Например, сейчас мой агент тетриса периодически выдает невероятные вращения =) б)Для самой по себе оптимизации было бы любопытно использовать какой-нибудь специальный алгоритм (см.
Локальный поиск в википедии). в)Остальные мои мысли см. в TODO