Avec un entier non signé de 16 bits N , votre tâche consiste à déterminer si sa représentation binaire mappée dans une matrice 4x4 correspond à une forme de tétromino et, dans l'affirmative, de quelle forme il s'agit.
Matrice
Chaque bit de N est cartographié dans une matrice 4x4, de gauche à droite et de haut en bas, en commençant par le plus significatif.
Exemple :
N = 17600
binary representation: 0100010011000000
matrix: [ [ 0, 1, 0, 0 ],
[ 0, 1, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 0, 0, 0, 0 ] ]
Formes de tetromino
Formes de base
Il existe 7 formes de tétrominos, identifiées par les lettres O , I , S , Z , L , J et T :
Rotations et traductions
Si une forme est traduite et / ou pivotée dans la matrice 4x4, elle est toujours considérée comme une variation valide du même tétromino. Par exemple, 17600, 1136, 2272 et 1604 doivent tous être identifiés en tant que J tétrominoes:
Ne pas emballer!
Cependant, les formes ne peuvent pas être enroulées ou déplacées au-delà des limites de la matrice. Par exemple, ni 568 ni 688 ne doivent être identifiés comme des tétrominoes J (sans parler de toute autre forme):
Clarifications et règles
- Vous pouvez entrer les données sous forme d’entier ou directement sous forme de 16 chiffres binaires dans n’importe quel format raisonnable, tel qu’un tableau 2D, un tableau plat ou une chaîne délimitée.
- Il est garanti que l’entrée est un entier non signé de 16 bits (ou sa représentation équivalente sous la forme d’un tableau ou d’une chaîne).
- Lorsqu'une forme valide est identifiée, vous devez imprimer ou renvoyer la lettre d' identification de la forme, en minuscule ou en majuscule.
- Si aucune forme n'est identifiée, vous devez imprimer ou renvoyer une valeur qui ne correspond à aucune lettre de tetromino. Vous pouvez également choisir de ne rien retourner du tout.
- Pour être considérée comme valide, la matrice doit contenir la forme exacte du tétromino sans aucune cellule supplémentaire (voir 1911 et 34953 dans les cas de test).
- C'est du code-golf , donc la réponse la plus courte en octets gagne!
Cas de test
Vous pouvez suivre ce lien pour obtenir les scénarios de test sous forme de tableaux 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
, c'est- 1111011110111101111
à- dire pour 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
dans JS: P