Dado un número entero de 16 bits sin signo N , su tarea es determinar si su representación binaria asignada dentro de una matriz 4x4 coincide con una forma de tetromino y, de ser así, de qué forma es.
Matriz
Cada bit de N se asigna dentro de una matriz 4x4, de izquierda a derecha y de arriba a abajo, comenzando por la más significativa.
Ejemplo :
N = 17600
binary representation: 0100010011000000
matrix: [ [ 0, 1, 0, 0 ],
[ 0, 1, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 0, 0, 0, 0 ] ]
Formas Tetromino
Formas de base
Hay 7 formas de tetromino, identificadas por las letras O , I , S , Z , L , J y T :
Rotaciones y traducciones
Si una forma se traslada y / o gira dentro de la matriz 4x4, todavía se considera una variación válida del mismo tetromino. Por ejemplo, 17600, 1136, 2272 y 1604 deberían identificarse como J tetrominoes:
¡No lo envuelvas!
Sin embargo, las formas no pueden ajustarse o desplazarse más allá de cualquier límite de la matriz. Por ejemplo, ni 568 ni 688 deben identificarse como J tetrominoes (y mucho menos cualquier otra forma):
Aclaraciones y reglas.
- Puede tomar la entrada como un entero o directamente como 16 dígitos binarios en cualquier formato razonable, como una matriz 2D, una matriz plana o una cadena delimitada.
- Se garantiza que la entrada sea un entero de 16 bits sin signo (o su representación equivalente como una matriz o una cadena).
- Cuando se identifica una forma válida, debe imprimir o devolver la letra que identifica la forma, ya sea en mayúsculas o minúsculas.
- Si no se identifica ninguna forma, debe imprimir o devolver un valor que no coincida con ninguna letra de tetromino. También puede optar por no devolver nada en absoluto.
- Para ser considerada válida, la matriz debe contener la forma exacta de tetromino sin células adicionales (ver 1911 y 34953 en los casos de prueba).
- Este es el código de golf , por lo que gana la respuesta más corta en bytes.
Casos de prueba
Puede seguir este enlace para obtener los casos de prueba como matrices 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
, es decir, 1111011110111101111
para 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
en JS: P