#P1116A2. Generate equal superposition of four basis states

Generate equal superposition of four basis states

Description

You are given $N$ qubits in the zero state $|0...0 \rangle$. You are also given four distinct bit vectors which describe four different basis states on $N$ qubits $|\psi_i \rangle$.

Your task is to generate a state which is an equal superposition of the given basis states:

$$|S \rangle = \frac{1}{2} \big( |\psi_0 \rangle + |\psi_1 \rangle + |\psi_2 \rangle + |\psi_3 \rangle \big)$$

You have to implement an operation which takes the following inputs:

  • an array of $N$ ($2 \le N \le 16$) qubits,
  • a two-dimensional array of Boolean values $bits$ representing the basis states $|\psi_i \rangle$. $bits$ will have exactly 4 elements, each of $bits[i]$ describing the basis state $|\psi_i \rangle$. Each of $bits[i]$ will have $N$ elements, $bits[i][j]$ giving the state of qubit $j$ in the basis state $|\psi_i \rangle$. Bit values true and false corresponding to $|1 \rangle$ and $|0 \rangle$ states, respectively; for example, for $N = 2$ an array [false, true] will represent the basis state $|01\rangle$. Each pair of $bits[i]$ and $bits[j]$ will differ in at least one position for $i \neq j$.

The operation doesn't have an output; its "output" is the state in which it leaves the qubits.

Your code should have the following signature:

namespace Solution {
    open Microsoft.Quantum.Primitive;
    open Microsoft.Quantum.Canon;
operation Solve (qs : Qubit[], bits : Bool[][]) : Unit {
    // your code here
}

}

</p>