From 7ea69410436d3ee29a0fd5ee38790b2eb0c1a390 Mon Sep 17 00:00:00 2001 From: Devika Mehra Date: Tue, 1 Oct 2024 15:46:53 -0700 Subject: [PATCH] Added DoubleAsStringWithPrecision function - Multiple Katas (#1897) Added DoubleAsStringWithPrecision function to following katas 1. Multi Qubit Gates 2. Preparing Quantum States 3. Measurement in Single-Qubit Systems 4. Distinguishing Quantum States --- katas/content/distinguishing_states/a_b/Verification.qs | 3 ++- .../multi_qubit_gates/controlled_rotation/Verification.qs | 3 ++- .../preparing_states/unequal_superposition/Verification.qs | 3 ++- .../a_b_basis_measurements/Verification.qs | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/katas/content/distinguishing_states/a_b/Verification.qs b/katas/content/distinguishing_states/a_b/Verification.qs index b4d3b2b6a1..271932b889 100644 --- a/katas/content/distinguishing_states/a_b/Verification.qs +++ b/katas/content/distinguishing_states/a_b/Verification.qs @@ -28,7 +28,8 @@ namespace Kata.Verification { ); if not isCorrect { - Message($"Test fails for alpha={alpha}"); + let precision = 3; + Message($"Test fails for alpha={DoubleAsStringWithPrecision(alpha, precision)}"); return false; } } diff --git a/katas/content/multi_qubit_gates/controlled_rotation/Verification.qs b/katas/content/multi_qubit_gates/controlled_rotation/Verification.qs index 7a91783355..3b0b5c83aa 100644 --- a/katas/content/multi_qubit_gates/controlled_rotation/Verification.qs +++ b/katas/content/multi_qubit_gates/controlled_rotation/Verification.qs @@ -15,8 +15,9 @@ namespace Kata.Verification { let solution = register => Kata.ControlledRotation(register, angle); let reference = register => ControlledRotation(register, angle); if not CheckOperationsAreEqual(2, solution, reference) { + let precision = 3; Message("Incorrect."); - Message($"The test case for theta={angle} did not pass"); + Message($"The test case for theta={DoubleAsStringWithPrecision(angle, precision)} did not pass"); return false; } } diff --git a/katas/content/preparing_states/unequal_superposition/Verification.qs b/katas/content/preparing_states/unequal_superposition/Verification.qs index 9ebc411a98..5123752053 100644 --- a/katas/content/preparing_states/unequal_superposition/Verification.qs +++ b/katas/content/preparing_states/unequal_superposition/Verification.qs @@ -10,11 +10,12 @@ namespace Kata.Verification { @EntryPoint() operation CheckSolution() : Bool { let limit = 36; + let precision = 3; for i in 0 .. limit { let alpha = 2.0 * PI() * IntAsDouble(i) / IntAsDouble(limit); let solution = Kata.UnequalSuperposition(_, alpha); let reference = UnequalSuperposition_Reference(_, alpha); - Message($"Testing for alpha = {alpha}..."); + Message($"Testing for alpha = {DoubleAsStringWithPrecision(alpha, precision)}..."); if not CheckOperationsEquivalenceOnZeroStateWithFeedback( qs => solution(qs[0]), qs => reference(qs[0]), diff --git a/katas/content/single_qubit_measurements/a_b_basis_measurements/Verification.qs b/katas/content/single_qubit_measurements/a_b_basis_measurements/Verification.qs index 79057e37c2..4678230500 100644 --- a/katas/content/single_qubit_measurements/a_b_basis_measurements/Verification.qs +++ b/katas/content/single_qubit_measurements/a_b_basis_measurements/Verification.qs @@ -27,7 +27,8 @@ namespace Kata.Verification { [$"|B⟩=(-i sin({i}π/10)|0⟩ + cos({i}π/10)|1⟩)", $"|A⟩=(cos({i}π/10)|0⟩ + i sin({i}π/10)|1⟩)"], true); if not isCorrect { - Message($"Test fails for alpha={alpha}"); + let precision = 3; + Message($"Test fails for alpha={DoubleAsStringWithPrecision(alpha, precision)}"); return false; } }