NP-полнота игры Тетрис
Тетрис — популярная игра, созданная в середине 1980-х математиком Алексеем Пажитновым.
Формальные правила
- Игровое поле — расчерченный на клетки прямоугольник размером горизонтальных рядов (строк) на вертикальных (столбцов). Примем следующую индексацию: снизу вверх и слева направо. -я клетка либо свободна, либо занята. В допустимом состоянии поля ни один горизонтальный ряд не заполнен целиком и нет ни одной полностью пустой строки, которая бы лежала ниже занятой клетки. При оценке допустимости некоторых действий будем считать, что все клетки вне игрового поля всегда заняты и тем самым ограничивают поле.
//картинки//
- Игровые фигуры — семь различных фигур, получаемых соединением четырех единичных клеток по каким-либо из сторон. Каждая фигура имеет центр (на илл. 2). Состояние фигуры — кортеж из четырех элементов, а именно:
- тип фигуры — SQ, LG, RG, LS, RS, I или T.
- ориентация — поворот на 0°, 90°, 180° или 270° по часовой стрелке относительно базовой ориентации фигуры (на илл. 1).
- позиция центра фигуры на поле, выбираемая из . Позицией SQ считается местоположение его левой верхней клетки, так как ее центр лежит на границе четырех клеток, а не внутри одной.
- значение зафиксирована или не зафиксирована, определяющее, может ли фигура продолжать двигаться.
В исходном состоянии фигуры она имеет базовую ориентацию, ее позиция такова, что верхний ряд ее клеток содержится в ряду
, а центр в столбце , и она не зафиксирована.- Поворот фигуры. Модель поворота — функция , где и — состояния фигуры, — угол поворота, а — игровое поле. На налагаются следующие условия:
- Если и поворот допустим, то для некоторых и . Если поворот недопустим, то .
- При определении допустимости поворота, рассматривает окрестность констатного размера у фигуры — то есть, только клетки на заданном расстоянии от позиции влияют на , а положение фигуры на игровом поле значения не имеет.
- Если все клетки в окрестности свободны, то поворот допустим.
- Если поворот допустим, то не занимает ни одной клетки, уже занятой в .
- Игровые действия.
//stub//