Bei einer vorzeichenlosen 16-Bit-Ganzzahl N müssen Sie feststellen, ob ihre in einer 4x4-Matrix abgebildete Binärdarstellung mit einer Tetrominoform übereinstimmt , und wenn ja, welche Form es ist.
Matrix
Jedes Bit von N wird in einer 4x4-Matrix von links nach rechts und von oben nach unten abgebildet, beginnend mit dem höchstwertigen.
Beispiel :
N = 17600
binary representation: 0100010011000000
matrix: [ [ 0, 1, 0, 0 ],
[ 0, 1, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 0, 0, 0, 0 ] ]
Tetromino-Formen
Grundformen
Es gibt 7 Tetrominoformen, die mit den Buchstaben O , I , S , Z , L , J und T gekennzeichnet sind :
Rotationen und Übersetzungen
Wenn eine Form innerhalb der 4x4-Matrix verschoben und / oder gedreht wird, wird sie weiterhin als gültige Variation desselben Tetrominos betrachtet. Zum Beispiel sollten 17600, 1136, 2272 und 1604 alle als J- Tetrominos identifiziert werden :
Wickeln Sie nicht!
Die Formen können jedoch nicht über die Grenzen der Matrix hinaus gewickelt oder verschoben werden. Zum Beispiel sollten weder 568 noch 688 als J- Tetrominoe identifiziert werden (geschweige denn irgendeine andere Form):
Erläuterungen und Regeln
- Sie können Eingaben als Ganzzahl oder direkt als 16 Binärziffern in einem beliebigen vernünftigen Format, z. B. einem 2D-Array, einem flachen Array oder einer durch Trennzeichen getrennten Zeichenfolge, annehmen.
- Bei der Eingabe handelt es sich garantiert um eine 16-Bit-Ganzzahl ohne Vorzeichen (oder die entsprechende Darstellung als Array oder Zeichenfolge).
- Wenn eine gültige Form identifiziert wurde, müssen Sie den Buchstaben , der die Form identifiziert, entweder in Groß- oder Kleinbuchstaben drucken oder zurückgeben .
- Wenn keine Form identifiziert wird, müssen Sie einen Wert drucken oder zurückgeben, der keinem Tetromino-Buchstaben entspricht. Sie können sich auch dafür entscheiden, überhaupt nichts zurückzugeben.
- Um als gültig zu gelten, muss die Matrix die genaue Tetrominoform ohne zusätzliche Zellen enthalten (siehe 1911 und 34953 in den Testfällen).
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
Testfälle
Sie können diesem Link folgen , um die Testfälle als 2D-Arrays abzurufen.
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
, also 1111011110111101111
für 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