Матриця Уолша являє собою особливий вид квадратної матриці з застосуванням в квантових обчисленнях (і , можливо , в іншому місці, але я тільки піклуватися про квантових обчисленнях).
Властивості матриць Уолша
Розміри такі ж , сили 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]...)