Матрица Уолша представляет собой особый вид квадратной матрицы с применением в квантовых вычислениях (и , возможно , в другом месте, но я только заботиться о квантовых вычислениях).
Свойства матриц Уолша
Размеры такие же , силы 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 ->
Pastebin
Это код-гольф , поэтому выигрывает самое короткое решение на каждом языке! Удачного игры в гольф!
W(1)
возвращается [[1]]
, W(2)
возвращается [[1,1],[1,-1]
...)