From a46939ea7e7398835cbf88a07b9daff6eb0b6552 Mon Sep 17 00:00:00 2001 From: devikamehra Date: Sat, 24 Aug 2024 21:18:07 -0700 Subject: [PATCH 1/3] Added DoubleAsStringWithPrecision function --- .../single_qubit_gates/amplitude_change/Verification.qs | 4 +++- .../content/single_qubit_gates/complex_phase/Verification.qs | 4 +++- .../prepare_arbitrary_state/Verification.qs | 4 +++- .../single_qubit_gates/prepare_rotated_state/Verification.qs | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/katas/content/single_qubit_gates/amplitude_change/Verification.qs b/katas/content/single_qubit_gates/amplitude_change/Verification.qs index bd7ba2a0e6..4a0304dab1 100644 --- a/katas/content/single_qubit_gates/amplitude_change/Verification.qs +++ b/katas/content/single_qubit_gates/amplitude_change/Verification.qs @@ -14,8 +14,10 @@ namespace Kata.Verification { let reference = register => AmplitudeChange(alpha, register[0]); let isCorrect = CheckOperationsAreEqualStrict(1, solution, reference); if not isCorrect { + // In case of an error, this value defines the precision with which complex numbers should be displayed + let precision = 6; Message("Incorrect."); - Message($"The solution was incorrect for the test case alpha = {alpha}."); + Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha,precision)}."); Message("Hint: examine the effect your solution has on the state 0.6|0〉 + 0.8|1〉 and compare it with the effect it " + "is expected to have."); ShowQuantumStateComparison(1, qs => Ry(ArcTan2(0.8, 0.6) * 2.0, qs[0]), solution, reference); diff --git a/katas/content/single_qubit_gates/complex_phase/Verification.qs b/katas/content/single_qubit_gates/complex_phase/Verification.qs index 9da1988806..d42069b1ab 100644 --- a/katas/content/single_qubit_gates/complex_phase/Verification.qs +++ b/katas/content/single_qubit_gates/complex_phase/Verification.qs @@ -14,8 +14,10 @@ namespace Kata.Verification { let reference = register => PhaseChange(alpha, register[0]); let isCorrect = CheckOperationsAreEqualStrict(1, solution, reference); if not isCorrect { + // In case of an error, this value defines the precision with which complex numbers should be displayed + let precision = 6; Message("Incorrect."); - Message($"The solution was incorrect for the test case alpha = {alpha}."); + Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha,precision)}."); Message("Hint: examine the effect your solution has on the state 0.6|0〉 + 0.8|1〉 and compare it with the effect it " + "is expected to have."); ShowQuantumStateComparison(1, qs => Ry(ArcTan2(0.8, 0.6) * 2.0, qs[0]), solution, reference); diff --git a/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs b/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs index 123bfb9e46..d489de6580 100644 --- a/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs +++ b/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs @@ -19,8 +19,10 @@ namespace Kata.Verification { let reference = register => PrepareArbitraryState(alpha, beta, theta, register[0]); let isCorrect = CheckOperationsEquivalenceOnZeroStateStrict(solution, reference, 1); if not isCorrect { + // In case of an error, this value defines the precision with which complex numbers should be displayed + let precision = 6; Message("Incorrect."); - Message($"The solution was incorrect for the test case alpha = {alpha}, beta = {beta}, theta = {theta}."); + Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha,precision)}, beta = {DoubleAsStringWithPrecision(beta,precision)}, theta = {DoubleAsStringWithPrecision(theta,precision)}."); Message("Hint: examine the state prepared by your solution and compare it with the state it " + "is expected to prepare."); ShowQuantumStateComparison(1, qs => (), solution, reference); diff --git a/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs b/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs index fc29dc6387..b212866f8f 100644 --- a/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs +++ b/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs @@ -17,8 +17,10 @@ namespace Kata.Verification { let reference = register => PrepareRotatedState(alpha, beta, register[0]); let isCorrect = CheckOperationsEquivalenceOnZeroStateStrict(solution, reference, 1); if not isCorrect { + // In case of an error, this value defines the precision with which complex numbers should be displayed + let precision = 6; Message("Incorrect."); - Message($"The solution was incorrect for the test case alpha = {alpha}, beta = {beta}."); + Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha,precision)}, beta = {DoubleAsStringWithPrecision(beta,precision)}."); Message("Hint: examine the state prepared by your solution and compare it with the state it " + "is expected to prepare."); ShowQuantumStateComparison(1, qs => (), solution, reference); From 5bcd613b80a54c5610c2410cc943d195dbb6224a Mon Sep 17 00:00:00 2001 From: devikamehra Date: Mon, 26 Aug 2024 20:03:17 -0700 Subject: [PATCH 2/3] Reduced precision and added spacing --- .../single_qubit_gates/amplitude_change/Verification.qs | 4 ++-- .../content/single_qubit_gates/complex_phase/Verification.qs | 4 ++-- .../prepare_arbitrary_state/Verification.qs | 4 ++-- .../single_qubit_gates/prepare_rotated_state/Verification.qs | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/katas/content/single_qubit_gates/amplitude_change/Verification.qs b/katas/content/single_qubit_gates/amplitude_change/Verification.qs index 4a0304dab1..188c7f2d1b 100644 --- a/katas/content/single_qubit_gates/amplitude_change/Verification.qs +++ b/katas/content/single_qubit_gates/amplitude_change/Verification.qs @@ -15,9 +15,9 @@ namespace Kata.Verification { let isCorrect = CheckOperationsAreEqualStrict(1, solution, reference); if not isCorrect { // In case of an error, this value defines the precision with which complex numbers should be displayed - let precision = 6; + let precision = 3; Message("Incorrect."); - Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha,precision)}."); + Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha, precision)}."); Message("Hint: examine the effect your solution has on the state 0.6|0〉 + 0.8|1〉 and compare it with the effect it " + "is expected to have."); ShowQuantumStateComparison(1, qs => Ry(ArcTan2(0.8, 0.6) * 2.0, qs[0]), solution, reference); diff --git a/katas/content/single_qubit_gates/complex_phase/Verification.qs b/katas/content/single_qubit_gates/complex_phase/Verification.qs index d42069b1ab..350e6a776f 100644 --- a/katas/content/single_qubit_gates/complex_phase/Verification.qs +++ b/katas/content/single_qubit_gates/complex_phase/Verification.qs @@ -15,9 +15,9 @@ namespace Kata.Verification { let isCorrect = CheckOperationsAreEqualStrict(1, solution, reference); if not isCorrect { // In case of an error, this value defines the precision with which complex numbers should be displayed - let precision = 6; + let precision = 3; Message("Incorrect."); - Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha,precision)}."); + Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha, precision)}."); Message("Hint: examine the effect your solution has on the state 0.6|0〉 + 0.8|1〉 and compare it with the effect it " + "is expected to have."); ShowQuantumStateComparison(1, qs => Ry(ArcTan2(0.8, 0.6) * 2.0, qs[0]), solution, reference); diff --git a/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs b/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs index d489de6580..2da7b9f1f9 100644 --- a/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs +++ b/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs @@ -20,9 +20,9 @@ namespace Kata.Verification { let isCorrect = CheckOperationsEquivalenceOnZeroStateStrict(solution, reference, 1); if not isCorrect { // In case of an error, this value defines the precision with which complex numbers should be displayed - let precision = 6; + let precision = 3; Message("Incorrect."); - Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha,precision)}, beta = {DoubleAsStringWithPrecision(beta,precision)}, theta = {DoubleAsStringWithPrecision(theta,precision)}."); + Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha, precision)}, beta = {DoubleAsStringWithPrecision(beta, precision)}, theta = {DoubleAsStringWithPrecision(theta, precision)}."); Message("Hint: examine the state prepared by your solution and compare it with the state it " + "is expected to prepare."); ShowQuantumStateComparison(1, qs => (), solution, reference); diff --git a/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs b/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs index b212866f8f..56e1ff90a4 100644 --- a/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs +++ b/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs @@ -18,9 +18,9 @@ namespace Kata.Verification { let isCorrect = CheckOperationsEquivalenceOnZeroStateStrict(solution, reference, 1); if not isCorrect { // In case of an error, this value defines the precision with which complex numbers should be displayed - let precision = 6; + let precision = 3; Message("Incorrect."); - Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha,precision)}, beta = {DoubleAsStringWithPrecision(beta,precision)}."); + Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha, precision)}, beta = {DoubleAsStringWithPrecision(beta, precision)}."); Message("Hint: examine the state prepared by your solution and compare it with the state it " + "is expected to prepare."); ShowQuantumStateComparison(1, qs => (), solution, reference); From 50fa9fe43b79a3b244593c931fb67985fa43735d Mon Sep 17 00:00:00 2001 From: devikamehra Date: Tue, 27 Aug 2024 13:32:31 -0700 Subject: [PATCH 3/3] Remove comments --- .../content/single_qubit_gates/amplitude_change/Verification.qs | 1 - katas/content/single_qubit_gates/complex_phase/Verification.qs | 1 - .../single_qubit_gates/prepare_arbitrary_state/Verification.qs | 1 - .../single_qubit_gates/prepare_rotated_state/Verification.qs | 1 - 4 files changed, 4 deletions(-) diff --git a/katas/content/single_qubit_gates/amplitude_change/Verification.qs b/katas/content/single_qubit_gates/amplitude_change/Verification.qs index 188c7f2d1b..9c188af79f 100644 --- a/katas/content/single_qubit_gates/amplitude_change/Verification.qs +++ b/katas/content/single_qubit_gates/amplitude_change/Verification.qs @@ -14,7 +14,6 @@ namespace Kata.Verification { let reference = register => AmplitudeChange(alpha, register[0]); let isCorrect = CheckOperationsAreEqualStrict(1, solution, reference); if not isCorrect { - // In case of an error, this value defines the precision with which complex numbers should be displayed let precision = 3; Message("Incorrect."); Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha, precision)}."); diff --git a/katas/content/single_qubit_gates/complex_phase/Verification.qs b/katas/content/single_qubit_gates/complex_phase/Verification.qs index 350e6a776f..605d6cfb8d 100644 --- a/katas/content/single_qubit_gates/complex_phase/Verification.qs +++ b/katas/content/single_qubit_gates/complex_phase/Verification.qs @@ -14,7 +14,6 @@ namespace Kata.Verification { let reference = register => PhaseChange(alpha, register[0]); let isCorrect = CheckOperationsAreEqualStrict(1, solution, reference); if not isCorrect { - // In case of an error, this value defines the precision with which complex numbers should be displayed let precision = 3; Message("Incorrect."); Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha, precision)}."); diff --git a/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs b/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs index 2da7b9f1f9..fb020ef51d 100644 --- a/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs +++ b/katas/content/single_qubit_gates/prepare_arbitrary_state/Verification.qs @@ -19,7 +19,6 @@ namespace Kata.Verification { let reference = register => PrepareArbitraryState(alpha, beta, theta, register[0]); let isCorrect = CheckOperationsEquivalenceOnZeroStateStrict(solution, reference, 1); if not isCorrect { - // In case of an error, this value defines the precision with which complex numbers should be displayed let precision = 3; Message("Incorrect."); Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha, precision)}, beta = {DoubleAsStringWithPrecision(beta, precision)}, theta = {DoubleAsStringWithPrecision(theta, precision)}."); diff --git a/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs b/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs index 56e1ff90a4..d79ac988a0 100644 --- a/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs +++ b/katas/content/single_qubit_gates/prepare_rotated_state/Verification.qs @@ -17,7 +17,6 @@ namespace Kata.Verification { let reference = register => PrepareRotatedState(alpha, beta, register[0]); let isCorrect = CheckOperationsEquivalenceOnZeroStateStrict(solution, reference, 1); if not isCorrect { - // In case of an error, this value defines the precision with which complex numbers should be displayed let precision = 3; Message("Incorrect."); Message($"The solution was incorrect for the test case alpha = {DoubleAsStringWithPrecision(alpha, precision)}, beta = {DoubleAsStringWithPrecision(beta, precision)}.");