Матриця Уолша являє собою особливий вид квадратної матриці з застосуванням в квантових обчисленнях (і , можливо , в іншому місці, але я тільки піклуватися про квантових обчисленнях).
Властивості матриць Уолша
Розміри такі ж , сили 2. Таким чином, ми можемо звернутися до цих матрицях до два експонента тут, називаючи їх W(0)
, W(1)
, W(2)
...
W(0)
визначається як [[1]]
.
Для n>0
, W(n)
виглядає наступним чином :
[[W(n-1) W(n-1)]
[W(n-1) -W(n-1)]]
Так і W(1)
є:
[[1 1]
[1 -1]]
І W(2)
це:
[[1 1 1 1]
[1 -1 1 -1]
[1 1 -1 -1]
[1 -1 -1 1]]
Шаблон продовжується ...
Ваше завдання
Напишіть програму або функцію, яка приймає як введення ціле число n
і друкує / повертає W(n)
в будь-якому зручному форматі. Це може бути масив масивів, сплющений масив булевих .svg
зображень, зображення, яке ви називаєте, доки воно правильне.
Стандартні лазівки заборонені.
Кілька речей:
Для W(0)
, то 1
потрібно не бути обгорнуті навіть один раз. Це може бути просто ціле число.
Вам дозволено 1-індексні результати W(1)
- тоді б це було [[1]]
.
Тестові кейси
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 ->
Пастебін
Це код-гольф , тому найкоротше рішення на кожній мові виграє! Щасливого гольфу!
W(1)
повертається [[1]]
, W(2)
повертається [[1,1],[1,-1]
...)