← Home
package kata

func AntiDiagonalUnitary(n int) [][]complex128 {
	size := 1 << n
	u := make([][]complex128, size)
	for i := 0; i < size; i++ {
		u[i] = make([]complex128, size)
		u[i][size-1-i] = 1
	}
	return u
}

func ApplyAntiDiagonalUnitary(state []complex128) {
	for i, j := 0, len(state)-1; i < j; i, j = i+1, j-1 {
		state[i], state[j] = state[j], state[i]
	}
}