Описание
Мы рассматриваем слегка упрощенную версию тетриса, где каждый ход состоит из:
- вращая деталь по часовой стрелке, от 0 до 3 раз
- позиционирование фигуры в данном столбце
- быстрое падение
Цель состоит в том, чтобы определить количество завершенных линий, учитывая список таких ходов тетриса.
Завершенные строки удаляются по мере удаления частей, следуя стандартным правилам тетриса.
Playfield
Игровое поле шириной 10 колонок. Там нет Game Over, и предполагается, что всегда есть достаточно места и времени для выполнения вышеуказанных действий, независимо от конфигурации игрового поля. Высота игрового поля здесь не имеет большого значения, но вы можете использовать стандартные 22 строки в качестве верхнего предела.
Формы Тетромино
Ввод, вывод
вход
Разделенный запятыми список ходов тетриса, закодированных 3 символами. Первые два символа описывают используемую фигуру Тетромино, а последний - позицию, где она выпала.
- Tetromino:
I
,O
,T
,L
,J
,Z
илиS
, в том же порядке , как указано выше. - Количество вращений по часовой стрелке:
0
до3
- Колонка:
0
до9
. Это столбец , в котором верхний левый угол элемента (отмеченные звездочкойx
на рисунке выше) расположен после поворота 1
Предполагается, что все ходы в указанном списке действительны. Нет необходимости проверять наличие недопустимых записей, таких как I07
(горизонтальная I
форма расположена слишком далеко справа).
1 Вы можете либо реализовать алгоритм реального вращения, либо жестко закодировать все различные фигуры, если только они x
находятся в столбце, заданном третьим символом движения.
Выход
Количество завершенных строк.
пример
O00,T24
сгенерирует первую позицию и O00,T24,S02,T01,L00,Z03,O07,L06,I05
сгенерирует вторую позицию.
Поэтому следующая последовательность сгенерирует тетрис и должна вернуть 4
:
O00,T24,S02,T01,L00,Z03,O07,L06,I05,I19
Контрольные примеры
1) "O00,T24,S02,T01,L00,Z03,O07,L06,I05,I19" -> 4
2) "S00,J03,L27,Z16,Z18,I10,T22,I01,I05,O01,L27,O05,S13" -> 5
3) "I01,T30,J18,L15,J37,I01,S15,L07,O03,O03,L00,Z00,T38,T01,S06,L18,L14" -> 4
4) "S14,T00,I13,I06,I05,I19,L20,J26,O07,Z14,Z10,Z12,O01,L27,L04,I03,S07,I01,T25,J23,J27,O01,
I10,I10" -> 8
5) "O00,T24,L32,T16,L04,Z11,O06,L03,I18,J30,L23,Z07,I19,T05,T18,L30,I01,I01,I05,T02" -> 8
Тестовая страница
Вы можете использовать этот JSFiddle для проверки списка перемещений.