Với một số nguyên N không dấu 16 bit , nhiệm vụ của bạn là xác định xem biểu diễn nhị phân của nó được ánh xạ bên trong ma trận 4x4 có khớp với hình dạng tetromino hay không , và nếu vậy, nó có hình dạng như thế nào.
Ma trận
Mỗi bit của N được ánh xạ bên trong một ma trận 4 x 4, từ trái sang phải và từ trên xuống dưới, bắt đầu bằng một ma trận quan trọng nhất.
Ví dụ :
N = 17600
binary representation: 0100010011000000
matrix: [ [ 0, 1, 0, 0 ],
[ 0, 1, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 0, 0, 0, 0 ] ]
Hình dạng Tetromino
Hình dạng cơ sở
Có 7 hình dạng tetromino, được xác định bằng các chữ cái O , I , S , Z , L , J và T :
Xoay và dịch
Nếu một hình dạng được dịch và / hoặc xoay trong ma trận 4x4, nó vẫn được coi là một biến thể hợp lệ của cùng một tetromino. Ví dụ: 17600, 1136, 2272 và 1604 nên được xác định là tetrominoes J :
Đừng quấn!
Tuy nhiên, các hình dạng không thể bao quanh hoặc bị dịch chuyển ra ngoài bất kỳ ranh giới nào của ma trận. Chẳng hạn, không nên xác định 568 hay 688 là tetrominoes J (huống chi là bất kỳ hình dạng nào khác):
Làm rõ và quy tắc
- Bạn có thể lấy đầu vào dưới dạng số nguyên hoặc trực tiếp dưới 16 chữ số nhị phân ở bất kỳ định dạng hợp lý nào, chẳng hạn như mảng 2D, mảng phẳng hoặc chuỗi phân cách.
- Đầu vào được đảm bảo là một số nguyên 16 bit không dấu (hoặc biểu diễn tương đương của nó dưới dạng một mảng hoặc một chuỗi).
- Khi một hình dạng hợp lệ được xác định, bạn phải in hoặc trả lại chữ cái xác định hình dạng, bằng chữ thường hoặc chữ hoa.
- Nếu không có hình dạng nào được xác định, bạn phải in hoặc trả về giá trị không khớp với bất kỳ chữ tetromino nào. Bạn cũng có thể chọn không trả lại bất cứ điều gì cả.
- Để được coi là hợp lệ, ma trận phải chứa hình dạng tetromino chính xác mà không có bất kỳ ô bổ sung nào (xem 1911 và 34953 trong các trường hợp thử nghiệm).
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng!
Các trường hợp thử nghiệm
Bạn có thể theo liên kết này để lấy các trường hợp thử nghiệm dưới dạng mảng 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
, tức là 1111011110111101111
cho 65535
không?
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
trong JS: P