Slide 59
Slide 59 text
Deutsch-
Jozsa
Impl
// deutschjozsa return is given f is constant, returns true. Otherwise
retuens false.
func deutschjozsa(size int, f func(_ *qsim.Q, _ ...qsim.Qubit)) string {
q := qsim.New()
is := make([]qsim.Qubit, size)
for i := range is {
is[i] = q.Zero()
}
o := q.One() // equivalent to `o := q.Zero(); q.X(o);`
q.H(is...)
q.H(o)
// Apply func as Oracle Uf
f(q, is...)
q.H(is...)
q.Measure(is...)
return q.Binary()
}