나는 테트리스를 많이 좋아하지만 그다지 능숙하지 않습니다. 우주선이 내 눈앞에서 이륙하는 것을보고 싶을 때만! 그리고 컴퓨터는 모든 것에 아주 뛰어 나기 때문에 가능한 해결책은 프로그램이 나를 위해 그것을 재생하도록 만드는 것입니다.
테트로 미노 (네 개의 사각형으로 이루어진 모양)와 경기장의지도가 주어지면, 가장 많은 수의 라인을 기록하고 ( 최대 행 수가 블록으로 가득 차도록) 테트로 미노를 배치 하고 가장 적은 수를 생성해야합니다. 의 새로운 구멍 (경기장 상단의 "볼"수없는 빈 공간 1 ).
입력
입력은 떨어지는 테트로 미노를 나타내는 한 줄의 문자를 포함하고 그 뒤에 공백 ( ) 및 더하기 부호 ( ) 의 10 * 18 그리드 2 가 옵니다 .+
이 문자는 테트리스에서 발견되는 7 가지 기본 테트로 미노 중 하나를 나타냅니다. 모든 조각을 90도 회전 할 수 있지만 뒤집을 수는 없습니다. 모든 테트로 미노 및 회전은 다음과 같습니다.
#
S = ## ##
## #
#
Z = ## ##
## #
# ### ##
L = # # # #
## # ###
# ### ##
J = # # # #
## # ###
# # #
T = ### ## ### ##
# # #
O = ##
##
#
I = # ####
#
#
그리드는 +
이전에 배치 된 블록 으로 테트리스의 경기장을 나타냅니다 . 따라서 입력 예는 다음과 같습니다.
I
+ ++
+ +++++
++ +++++++
++ +++++++
++ +++++++
++ +++++++
++++++ +++
산출
출력은 입력과 동일하지만 이상적인 위치에 테트로 미노가 있습니다. tetromino는 #
미리 배치 된 블록 과 구별하기 위해 표현해야합니다 . 이 외에도, 당신은 당신의 게재 위치가 xL yH
새로운 라인에 폼 에서 얼마나 많은 라인 / 홀을 생성하는지 출력해야합니다 .
위에 제공된 예제의 출력은 다음 3입니다 .
I
+ ++
+ +++++
++#+++++++
++#+++++++
++#+++++++
++#+++++++
++++++ +++
4L 0H
최상의 결과 만 출력해야합니다. 동일한 점수를 부여하는 두 개 이상의 사례의 경우 모두 빈 칸으로 구분하여 출력해야합니다. 가장 좋은 결과는 먼저 득점 (내림차순) 라인 수를 기준으로 정렬 한 다음 생성 된 새 홀 (오름차순) 수를 기준으로 정렬하여 결정합니다. 따라서 1L 1H
보다 나은 점수 0L 0H
입니다.
프로그램을 테스트 할 수있는 다양한 입력 및 예상 출력 목록을 작성합니다. 이 공간을보십시오.
규칙과 명확성
- 이것은 code-golf 이므로 가장 짧은 올바른 구현이 승리합니다.
- 입력 / 출력은 대상 언어 (예 : 파일, 표준 입력 / 표준 출력, 텍스트 영역)에 적합한 매체에있을 수 있습니다.
- 대상 언어가 여러 줄 입력을 지원하지 않는 경우 (또는 그렇지 않은 경우) 입력의 각 줄을 쉼표 (
,
) 로 구분할 수 있습니다 . - 그리드에서 빈 줄의 출력을 생략 할 수 있습니다.
- 테트로 미노가 위에서 떨어지는 것을 기억하십시오-조각을 "지하"에 놓을 수 없습니다. 따라서 조각의 가능한 모든 배치가 "표면 수준"에 있다고 가정 할 수 있습니다 (즉, 조각과 보드 상단 사이에 블록이 없음).
- 당신이 게임 오버로 강요된 상황이 없을 것이라고 가정하자 (배치 된 테트로 미노는 필드의 중앙에 닿는다).
- 출력이 동일한 솔루션은 생략해야합니다 (예 :
O
조각 을 순진하게 회전하는 경우 3 개의 솔루션 출력이 있음 ).
1 이것이 오탐 (false positive)을 유발할 수 있음을 알고 있지만 단순화입니다.
2 Game Boy 버전에서 사용되는 격자 크기입니다.
3 예, 0H
맞습니다. 다시 확인, 나는 새로운 구멍을 말했다 ; ^)