Dato un unsigned interi a 16 bit N , il vostro compito è quello di determinare se la sua rappresentazione binaria mappato all'interno di una matrice 4x4 viene trovata una corrispondenza forma tetromino , in caso affermativo, quale forma è.
Matrice
Ogni bit di N è mappato all'interno di una matrice 4x4, da sinistra a destra e dall'alto verso il basso, a partire da quella più significativa.
Esempio :
N = 17600
binary representation: 0100010011000000
matrix: [ [ 0, 1, 0, 0 ],
[ 0, 1, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 0, 0, 0, 0 ] ]
Forme Tetromino
Forme di base
Esistono 7 forme di tetromino, identificate dalle lettere O , I , S , Z , L , J e T :
Rotazioni e traduzioni
Se una forma viene tradotta e / o ruotata all'interno della matrice 4x4, viene comunque considerata una valida variazione dello stesso tetromino. Ad esempio, 17600, 1136, 2272 e 1604 dovrebbero essere identificati come J tetrominoes:
Non avvolgere!
Tuttavia, le forme non possono avvolgersi o spostarsi oltre i confini della matrice. Ad esempio, né 568 né 688 dovrebbero essere identificati come J tetrominoes (per non parlare di qualsiasi altra forma):
Chiarimenti e regole
- Puoi prendere l'input come numero intero o direttamente come 16 cifre binarie in qualsiasi formato ragionevole, come un array 2D, un array piatto o una stringa delimitata.
- Si garantisce che l'ingresso sia un numero intero a 16 bit senza segno (o la sua rappresentazione equivalente come matrice o stringa).
- Quando viene identificata una forma valida, è necessario stampare o restituire la lettera che identifica la forma, in lettere minuscole o maiuscole.
- Se non viene identificata alcuna forma, è necessario stampare o restituire un valore che non corrisponde a nessuna lettera tetromino. Puoi anche scegliere di non restituire nulla.
- Per essere considerata valida, la matrice deve contenere la forma esatta del tetromino senza ulteriori celle (vedere 1911 e 34953 nei casi di test).
- Questo è code-golf , quindi vince la risposta più breve in byte!
Casi test
È possibile seguire questo collegamento per ottenere i casi di test come array 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
, ad esempio 1111011110111101111
per 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
in JS: P