기술
우리는 각각의 움직임이 다음과 같이 구성된 약간 단순화 된 테트리스 버전을 고려합니다.
- 조각을 시계 방향으로 0 ~ 3 회 회전
- 주어진 열에 조각을 배치
- 빠른 드롭
목표는 그러한 테트리스 이동 목록이 주어지면 완성 된 라인의 수를 결정하는 것입니다.
표준 테트리스 규칙에 따라 조각을 놓으면 완성 된 행이 제거됩니다.
운동장
운동장은 10 열 너비입니다. 아무 없습니다 게임 오버 와는 더 운동장의 구성을 문제가, 위의 작업을 수행하지 항상 충분한 공간과 시간이 있다고 가정한다. 운동장의 높이는 여기서 중요하지 않지만 표준 22 행을 상한으로 사용할 수 있습니다.
테트로 미노의 모양
입출력
입력
쉼표로 구분 된 Tetris 목록은 3 자로 인코딩됩니다. 처음 두 문자는 사용할 Tetromino 모양을 나타내고 마지막 두 문자는 떨어 뜨린 위치를 나타냅니다.
- 의 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 을 사용하여 이동 목록을 테스트 할 수 있습니다 .