부호없는 16 비트 정수 N이 주어지면, 4x4 행렬 내에 매핑 된 이진 표현이 tetromino shape 와 일치 하는지, 그렇다면 어떤 모양인지 확인해야합니다.
매트릭스
N의 각 비트 는 가장 중요한 것부터 시작하여 왼쪽에서 오른쪽으로 그리고 위에서 아래로 4x4 매트릭스 안에 매핑됩니다.
예 :
N = 17600
binary representation: 0100010011000000
matrix: [ [ 0, 1, 0, 0 ],
[ 0, 1, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 0, 0, 0, 0 ] ]
테트로 미노 모양
기본 도형
문자 O , I , S , Z , L , J 및 T로 식별되는 7 개의 테트로 미노 모양이 있습니다 .
회전 및 번역
4x4 매트릭스 내에서 형태가 변환 및 / 또는 회전되는 경우에도 동일한 테트로 미노의 유효한 변형으로 간주됩니다. 예를 들어 17600, 1136, 2272 및 1604는 모두 J 테트로 미노 로 식별되어야합니다 .
포장하지 마십시오!
그러나 도형이 줄 바꿈되거나 매트릭스의 경계를 넘어 이동할 수는 없습니다. 예를 들어, 어느 쪽도 568 도 688로 확인되어서는 안 J의 (혼자 다른 모양을 보자) tetrominoes :
설명 및 규칙
- 2D 배열, 플랫 배열 또는 구분 된 문자열과 같은 적절한 형식으로 정수 또는 16 진수로 16 진수를 입력 할 수 있습니다.
- 입력은 부호없는 16 비트 정수 (또는 배열 또는 문자열과 동등한 표현)임을 보증합니다.
- 유효한 도형이 식별되면 소문자 또는 대문자로 도형을 식별하는 문자를 인쇄하거나 반환해야합니다 .
- 모양이 식별되지 않으면 테트로 미노 문자와 일치하지 않는 값을 인쇄하거나 반환해야합니다. 아무것도 반환하지 않을 수도 있습니다.
- 유효한 것으로 간주 되려면 매트릭스에 추가 세포가없는 정확한 테트로 미노 모양이 포함되어야합니다 (테스트 사례의 1911 및 34953 참조).
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다!
테스트 사례
이 링크 를 따라 테스트 사례를 2D 배열로 가져올 수 있습니다 .
0 -> false
50 -> false
51 -> 'O'
1911 -> false
15 -> 'I'
34952 -> 'I'
34953 -> false
1122 -> 'S'
3168 -> 'Z'
785 -> 'L'
1136 -> 'J'
568 -> false
688 -> false
35968 -> 'T'
19520 -> 'T'
0
즉, 1111011110111101111
위해 65535
?
15,240,3840,4369,8738,17476,34952,61440
J : 71,113,142,226,275,550,802,1100,1136,1604,1808,2272,3208,3616,4400,8800,12832,17600,18176,25664,28928,36352,51328,57856
L : 23,46,116,232,368,547,736,785,1094,1570,1856,2188,3140,3712,5888,8752,11776,12560,17504,25120,29696,35008,50240,59392
O : 51,102,204,816,1632,3264,13056,26112,52224
S : 54,108,561,864,1122,1728,2244,8976,13824,17952,27648,35904
T : 39,78,114,228,305,562,610,624,1124,1220,1248,1824,2248,3648,4880,8992,9760,9984,17984,19520,19968,29184,35968,58368
Z는 :99,198,306,612,1224,1584,3168,4896,9792,19584,25344,50688
func1 . func2 . func3
JS에서 함수 체인을 사용하는 기술을 만드는 데 방해가되기 전에 며칠 전에 매우 비슷한 문제에 대해 작업하고있었습니다 . P