QuantumKatas Superposition Task 14
// And関数を使うためにimport open Microsoft.Quantum.Extensions.Bitwise; // Task 14**. W state on 2ᵏ qubits // Input: N = 2ᵏ qubits in |0...0⟩ state. // Goal: create a W state (https://en.wikipedia.org/wiki/W_state) on these qubits. // W state is an equal superposition of all basis states on N qubits of Hamming weight 1. // Example: for N = 4, W state is (|1000⟩ + |0100⟩ + |0010⟩ + |0001⟩) / 2. operation WState_PowerOfTwo (qs : Qubit[]) : Unit { // Hint: you can use Controlled modifier to perform arbitrary controlled gates. let N = Length(qs); let k = Floor(Lg(ToDouble(N))); using (qk = Qubit[k]) { ApplyToEach(H, qk); for (i in 0..N-1) { (ControlledOnInt(i, X))(qk, qs[i]); } for (i in 0..N-1) { for (j in 0..k-1) { if (And(i, Floor(PowD(2.0, ToDouble(j)))) > 0) { (ControlledOnInt(1, X))([qs[i]], qk[j]); } } } } }