Một Walsh ma trận là một loại đặc biệt của ma trận vuông với các ứng dụng trong máy tính lượng tử (và có lẽ ở nơi khác, nhưng tôi chỉ quan tâm đến lượng tử tính toán).
Tính chất của ma trận Walsh
Các kích thước là sức mạnh tương tự của 2. Do đó, chúng ta có thể tham khảo các ma trận bằng mũ hai ở đây, gọi họ W(0)
, W(1)
, W(2)
...
W(0)
được định nghĩa là [[1]]
.
Đối với n>0
, W(n)
trông giống như:
[[W(n-1) W(n-1)]
[W(n-1) -W(n-1)]]
Vậy W(1)
là:
[[1 1]
[1 -1]]
Và W(2)
là:
[[1 1 1 1]
[1 -1 1 -1]
[1 1 -1 -1]
[1 -1 -1 1]]
Mô hình tiếp tục ...
Nhiệm vụ của bạn
Viết chương trình hoặc hàm lấy đầu vào là số nguyên n
và in / trả về W(n)
ở bất kỳ định dạng thuận tiện nào. Đây có thể là một mảng các mảng, một mảng booleans phẳng, một .svg
hình ảnh, bạn đặt tên cho nó, miễn là nó chính xác.
Sơ hở tiêu chuẩn bị cấm.
Một vài điều:
Đối với W(0)
, 1
không cần phải được bọc dù chỉ một lần. Nó có thể là một số nguyên đơn thuần.
Bạn được phép 1-index results- W(1)
sau đó sẽ là [[1]]
.
Các trường hợp thử nghiệm
0 -> [[1]]
1 -> [[1 1]
[1 -1]]
2 -> [[1 1 1 1]
[1 -1 1 -1]
[1 1 -1 -1]
[1 -1 -1 1]]
3 -> [[1 1 1 1 1 1 1 1]
[1 -1 1 -1 1 -1 1 -1]
[1 1 -1 -1 1 1 -1 -1]
[1 -1 -1 1 1 -1 -1 1]
[1 1 1 1 -1 -1 -1 -1]
[1 -1 1 -1 -1 1 -1 1]
[1 1 -1 -1 -1 -1 1 1]
[1 -1 -1 1 -1 1 1 -1]]
8 ->
Quá khứ
Đây là môn đánh gôn , vì vậy giải pháp ngắn nhất trong mỗi ngôn ngữ sẽ thắng! Chúc bạn chơi golf vui vẻ!
W(1)
trả lại [[1]]
, W(2)
trả lại [[1,1],[1,-1]
...)