From 5486ea21bacca1c37c6b1f9937a58eb09e29fb53 Mon Sep 17 00:00:00 2001 From: lmrazorea <41484514+lmrazorea@users.noreply.github.com> Date: Fri, 26 Oct 2018 15:51:32 -0700 Subject: [PATCH] Refactor duplicate code in Grover's algorithm kata. (#39) --- GroversAlgorithm/ReferenceImplementation.qs | 23 ++++++++++++--------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/GroversAlgorithm/ReferenceImplementation.qs b/GroversAlgorithm/ReferenceImplementation.qs index 1fde8af745c..2764dc37c6e 100755 --- a/GroversAlgorithm/ReferenceImplementation.qs +++ b/GroversAlgorithm/ReferenceImplementation.qs @@ -36,19 +36,22 @@ namespace Quantum.Kata.GroversAlgorithm { // flip the bits in odd (0-based positions), // so that the condition for flipping the state of the target qubit is "query register is in 1...1 state" - for (n in 0..Length(queryRegister)-1) - { - if (n % 2 == 1) - { - X(queryRegister[n]); - } - } + FlipOddPositionBits_Reference(queryRegister); (Controlled X)(queryRegister, target); - for (n in 0..Length(queryRegister)-1) + (Adjoint FlipOddPositionBits_Reference)(queryRegister); + } + adjoint auto; + } + + operation FlipOddPositionBits_Reference (register : Qubit[]) : () + { + body + { + for (i in 0..Length(register) - 1) { - if (n % 2 == 1) + if (i % 2 == 1) { - X(queryRegister[n]); + X(register[i]); } } }