Biorąc pod uwagę 16-bitową liczbę całkowitą bez znaku N , Twoim zadaniem jest ustalenie, czy jego reprezentacja binarna odwzorowana w macierzy 4x4 pasuje do kształtu tetromino , a jeśli tak, to jaki to jest kształt.
Matryca
Każdy bit N jest odwzorowany w macierzy 4x4, od lewej do prawej i od góry do dołu, zaczynając od najbardziej znaczącej.
Przykład :
N = 17600
binary representation: 0100010011000000
matrix: [ [ 0, 1, 0, 0 ],
[ 0, 1, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 0, 0, 0, 0 ] ]
Kształty Tetromino
Podstawowe kształty
Istnieje 7 kształtów tetromino, oznaczonych literami O , I , S , Z , L , J i T :
Rotacje i tłumaczenia
Jeśli kształt jest translowany i / lub obracany w matrycy 4x4, nadal jest uważany za prawidłową odmianę tego samego tetromino. Na przykład 17600, 1136, 2272 i 1604 powinny zostać zidentyfikowane jako J tetrominoes:
Nie zawijaj!
Jednak kształty nie mogą się zawijać ani być przesuwane poza jakąkolwiek granicę matrycy. Na przykład ani 568, ani 688 nie powinny być identyfikowane jako tetromino J (nie mówiąc już o żadnym innym kształcie):
Wyjaśnienia i zasady
- Możesz przyjmować dane wejściowe jako liczbę całkowitą lub bezpośrednio jako 16 cyfr binarnych w dowolnym rozsądnym formacie, takim jak tablica 2D, płaska tablica lub łańcuch rozdzielany.
- Dane wejściowe mają gwarantowaną 16-bitową liczbę całkowitą bez znaku (lub ich równoważną reprezentację jako tablica lub ciąg znaków).
- Po zidentyfikowaniu prawidłowego kształtu należy wydrukować lub zwrócić literę identyfikującą kształt, małymi lub dużymi literami.
- Jeśli żaden kształt nie zostanie zidentyfikowany, musisz wydrukować lub zwrócić wartość, która nie pasuje do żadnej litery tetromino. Możesz także w ogóle nic nie zwracać.
- Aby uznać za prawidłową, matryca musi zawierać dokładny kształt tetromino bez żadnych dodatkowych komórek (patrz 1911 i 34953 w przypadkach testowych).
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach!
Przypadki testowe
Możesz użyć tego linku, aby uzyskać przypadki testowe jako tablice 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
, tj. 1111011110111101111
Dla 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
w JS: P