説明
各移動が以下で構成されるTetrisのわずかに簡略化されたバージョンを検討します。
- ピースを時計回りに0〜3回回転させます
- 特定の列にピースを配置する
- 高速ドロップ
目標は、そのようなテトリスの動きのリストを与えられて、完了した行の数を決定することです。
完成した行は、標準のテトリス規則に従って、ピースがドロップされると削除されます。
プレイフィールド
プレイフィールドの幅は10列です。そこにはいないゲームオーバー、何のプレイフィールドの構成を問題では、上記の操作を実行しないように、常に十分なスペースと時間があることを想定しています。プレイフィールドの高さはここではあまり重要ではありませんが、標準の22行を上限として使用できます。
テトロミノの形状
入出力
入力
3文字でエンコードされたテトリス移動のコンマ区切りリスト。最初の2文字は使用するTetrominoの形状を表し、最後の1文字はそれがドロップされた位置を表します。
- テトロミノ:
I
、O
、T
、L
、J
、Z
又はS
、上記と同じ順序です。 - 時計回りの回転数:
0
〜3
- 列:
0
から9
。これは、ピースの左上隅(x
上の写真ででマークされている)が回転後に配置されている列です1
指定されたリスト内のすべての移動が有効であると想定されます。I07
(水平方向のI
配置が右に行き過ぎているなど)の無効なエントリをチェックする必要はありません。
1 移動の3番目の文字で指定された列にある限り、実際の回転アルゴリズムを実装するか、すべての異なる形状をハードコーディングx
することができます。
出力
完了した行の数。
例
O00,T24
最初の位置O00,T24,S02,T01,L00,Z03,O07,L06,I05
を生成し、2番目の位置を生成します。
したがって、次のシーケンスはテトリスを生成し、返す必要があり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を使用して、移動リストをテストできます。