게임 테트리스 벽돌 또는 7 개 종류가있다 Tetr의 난의 minoes 수학적으로 공지되어 tetr O를 minoes 들이 4 개 정사각형 세그먼트로 만들어지기 때문에이 :
이름은 대략적인 모양에 해당하는 이름 I, J, L, O, S, T 및 Z입니다. 90 ° 회전을 계산하면 총 19 개의 고유 한 모양이 있습니다.
I
I
I
I
IIII
J
J
JJ
JJJ
J
JJ
J
J
J
JJJ
L
L
LL
L
LLL
LL
L
L
LLL
L
OO
OO
SS
SS
S
SS
S
TTT
T
T
TT
T
T
TTT
T
TT
T
ZZ
ZZ
Z
ZZ
Z
도전
이 19 개의 모양이 만들어지는 기본 세그먼트 역할을하는 직사각형 코드 블록을 작성하십시오. 이 코드가 모양 중 하나에 정렬되면 해당 모양과 관련된 단일 대문자를 출력하는 프로그램을 구성해야합니다. 이것은 19 가지 모양 모두에 적용되어야합니다.
19 개 모양 중 일부에있는 빈 영역은 공백으로 완전히 채워져 있습니다 ( ). 후행 빈 영역에는 아무것도 채워지지 않습니다 (따라서 프로그램이 항상 직사각형은 아닙니다).
예
이것이 코드 블록이라고 가정하십시오.
ABC
123
그런 다음 S Tetris 조각에 블록을 배치하면 다음과 같은 프로그램이 인쇄됩니다 S
.
ABCABC
123123
ABCABC
123123
ABC
123
ABCABC
123123
ABC
123
(앞의 모든 빈 공간은 공백 문자로 채워지며 행에 후행 공백이없는 것을 알 수 있습니다.)
동일한 아이디어가 6 개의 다른 조각과 각각의 회전에 적용됩니다.
노트
- 19 개의 최종 프로그램은 모두 동일한 프로그래밍 언어로 실행됩니다.
- 원하는 경우 모든 프로그램에 하나의 후행 줄 바꿈을 추가 할 수 있습니다 (일부만 또는 모두 아님).
- 코드 블록에는 줄 종결 자가 아닌 문자 (공백 포함)가 포함될 수 있습니다 .
- 선택적인 후행 줄 바꿈을 사용하여 문자를 표준 출력 (또는 언어의 가장 가까운 대안)으로 출력하십시오.
채점
코드 블록이 가장 작은 영역 (너비 x 높이)을 가진 제출이 이깁니다. 이것은 본질적으로 가장 짧은 코드가 승리 함을 의미하므로 code-golf 태그가 붙습니다 . Tiebreaker는 가장 높은 투표 응답으로 갑니다 .
이 ABC\n123
예의 면적은 3 × 2 = 6입니다.
단편
코드 블록이 주어지면이 스 니펫은 19 개의 프로그램을 모두 생성합니다.
<script>function drawShape(X,n,v){for(var t="",e=0;e<v.length;e++)for(var l=0;l<n.length;l++){for(var r=0;r<v[e].length;r++)t+="X"===v[e][r]?n[l]:X[l];t+="\n"}return t}function go(){var X=document.getElementById("input").value;if(0!=X.length){var n=X.replace(/./g," ").split("\n");X=X.split("\n");for(var v="I (v1):|I (v2):|J (v1):|J (v2):|J (v3):|J (v4):|L (v1):|L (v2):|L (v3):|L (v4):|O:|S (v1):|S (v2):|T (v1):|T (v2):|T (v3):|T (v4):|Z (v1):|Z (v2):".split("|"),t="X\nX\nX\nX|XXXX| X\n X\nXX|XXX\n X|XX\nX\nX|X\nXXX|X\nX\nXX| X\nXXX|XX\n X\n X|XXX\nX|XX\nXX| XX\nXX|X\nXX\n X|XXX\n X|X\nXX\nX| X\nXXX| X\nXX\n X|XX\n XX| X\nXX\nX".split("|"),e="",l=0;l<v.length;l++)e+=v[l]+"\n\n"+drawShape(n,X,t[l].split("\n"))+"\n";e=e.substring(0,e.length-2),document.getElementById("output").value=e}}</script><style>html *{font-family: monospace;}</style>Code Block:<br><textarea id='input' rows='8' cols='64'>ABC
123</textarea><br><button type='button' onclick='go()'>Go</button><br><br>All 19 Programs:<br><textarea id='output' rows='24' cols='64'></textarea>