-- Bernstein-Vazirani algorithm -- See qiskit.org/textbook/ch-algorithms/bernstein-vazirani.html "Secret value: 5" U(psi) = rotate(psi, C,0,X,3, -- cnot, control 0, target 3 C,2,X,3) -- cnot, control 2, target 3 psi = zero(16) psi[1] = 1 psi = rotate(psi,H,0,H,1,H,2,H,3,Z,3) psi = U(psi) psi = rotate(psi,H,0,H,1,H,2) -- result is a probability distribution P = psi conj(psi) -- qubit 3 is don't care for(k,1,8, P[k] = P[k] + P[k + 8]) xrange = (0,8) yrange = (0,1) draw(P[ceiling(x)],x) M = zero(2,8) -- 2 rows, 8 columns for(k,1,8, M[1,k] = P[k], M[2,k] = k - 1) M "Row 1 is the probability of observing the value in row 2"
Run