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