Враховуючи неподписане 16-бітове ціле число N , ваше завдання - визначити, чи відповідає його бінарне представлення, відображене у матриці 4x4, тетроміно форми , і якщо так, то яка форма.
Матриця
Кожен біт N відображається всередині матриці 4x4, зліва направо і зверху вниз, починаючи з найбільш значущої.
Приклад :
N = 17600
binary representation: 0100010011000000
matrix: [ [ 0, 1, 0, 0 ],
[ 0, 1, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 0, 0, 0, 0 ] ]
Форми тетроміно
Основні форми
Існує 7 тетроміно фігур, ідентифікованих літерами O , I , S , Z , L , J і T :
Обертання та переклади
Якщо форма перекладається та / або обертається в межах матриці 4x4, вона все ще вважається дійсною варіацією того ж тетроміно. Наприклад, 17600, 1136, 2272 і 1604 усі повинні бути ідентифіковані як J тетроміно:
Не загортайте!
Однак фігури не можуть обернутися або зміститися за межі будь-якої межі матриці. Наприклад, ні 568, ні 688 не повинні бути ідентифіковані як J тетроміно (не кажучи вже про будь-яку іншу форму):
Роз'яснення та правила
- Ви можете приймати введення як ціле число, або безпосередньо як 16 двійкових цифр у будь-якому розумному форматі, наприклад, 2D масив, плоский масив або обмежений рядок.
- Гарантоване введення буде 16-бітним цілим числом без підпису (або його еквівалентним поданням у вигляді масиву чи рядка).
- Коли ідентифікована правильна форма, ви повинні надрукувати або повернути лист, що ідентифікує форму, в нижньому або верхньому регістрі.
- Якщо жодна форма не визначена, ви повинні надрукувати або повернути значення, яке не відповідає жодній літрі тетроміно. Ви також можете взагалі нічого не повернути.
- Щоб вважати дійсним, матриця повинна містити точну форму тетроміно без додаткових комірок (див. 1911 та 34953 у тестових випадках).
- Це код-гольф , тому найкоротша відповідь у байтах виграє!
Тестові кейси
Ви можете перейти за цим посиланням, щоб отримати тестові випадки у вигляді двовимірних масивів.
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
, тобто 1111011110111101111
для 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
у JS: P