qsharp-lang 1.3.6-dev → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/dist/katas-content.generated.js +206 -2
  2. package/docs/Microsoft.Quantum.Arrays/All.md +1 -1
  3. package/docs/Microsoft.Quantum.Arrays/Any.md +1 -1
  4. package/docs/Microsoft.Quantum.Arrays/Chunks.md +1 -1
  5. package/docs/Microsoft.Quantum.Arrays/CircularlyShifted.md +1 -1
  6. package/docs/Microsoft.Quantum.Arrays/ColumnAt.md +1 -1
  7. package/docs/Microsoft.Quantum.Arrays/Count.md +2 -2
  8. package/docs/Microsoft.Quantum.Arrays/Diagonal.md +1 -1
  9. package/docs/Microsoft.Quantum.Arrays/DrawMany.md +1 -1
  10. package/docs/Microsoft.Quantum.Arrays/Enumerated.md +1 -1
  11. package/docs/Microsoft.Quantum.Arrays/Excluding.md +1 -1
  12. package/docs/Microsoft.Quantum.Arrays/Filtered.md +1 -1
  13. package/docs/Microsoft.Quantum.Arrays/FlatMapped.md +1 -1
  14. package/docs/Microsoft.Quantum.Arrays/Flattened.md +1 -1
  15. package/docs/Microsoft.Quantum.Arrays/Fold.md +1 -1
  16. package/docs/Microsoft.Quantum.Arrays/ForEach.md +1 -1
  17. package/docs/Microsoft.Quantum.Arrays/Head.md +1 -1
  18. package/docs/Microsoft.Quantum.Arrays/HeadAndRest.md +1 -1
  19. package/docs/Microsoft.Quantum.Arrays/IndexOf.md +1 -1
  20. package/docs/Microsoft.Quantum.Arrays/IndexRange.md +1 -1
  21. package/docs/Microsoft.Quantum.Arrays/Interleaved.md +1 -1
  22. package/docs/Microsoft.Quantum.Arrays/IsEmpty.md +1 -1
  23. package/docs/Microsoft.Quantum.Arrays/IsRectangularArray.md +1 -1
  24. package/docs/Microsoft.Quantum.Arrays/IsSorted.md +1 -1
  25. package/docs/Microsoft.Quantum.Arrays/IsSquareArray.md +1 -1
  26. package/docs/Microsoft.Quantum.Arrays/Mapped.md +1 -1
  27. package/docs/Microsoft.Quantum.Arrays/MappedByIndex.md +1 -1
  28. package/docs/Microsoft.Quantum.Arrays/MappedOverRange.md +1 -1
  29. package/docs/Microsoft.Quantum.Arrays/Most.md +1 -1
  30. package/docs/Microsoft.Quantum.Arrays/MostAndTail.md +1 -1
  31. package/docs/Microsoft.Quantum.Arrays/Padded.md +1 -1
  32. package/docs/Microsoft.Quantum.Arrays/Partitioned.md +1 -1
  33. package/docs/Microsoft.Quantum.Arrays/Rest.md +1 -1
  34. package/docs/Microsoft.Quantum.Arrays/Reversed.md +1 -1
  35. package/docs/Microsoft.Quantum.Arrays/SequenceI.md +1 -1
  36. package/docs/Microsoft.Quantum.Arrays/SequenceL.md +1 -1
  37. package/docs/Microsoft.Quantum.Arrays/Sorted.md +1 -1
  38. package/docs/Microsoft.Quantum.Arrays/Subarray.md +1 -1
  39. package/docs/Microsoft.Quantum.Arrays/Swapped.md +1 -1
  40. package/docs/Microsoft.Quantum.Arrays/Tail.md +1 -1
  41. package/docs/Microsoft.Quantum.Arrays/Transposed.md +1 -1
  42. package/docs/Microsoft.Quantum.Arrays/Unzipped.md +1 -1
  43. package/docs/Microsoft.Quantum.Arrays/Where.md +1 -1
  44. package/docs/Microsoft.Quantum.Arrays/Windows.md +1 -1
  45. package/docs/Microsoft.Quantum.Arrays/Zipped.md +1 -1
  46. package/docs/Microsoft.Quantum.Canon/ApplyCNOTChain.md +1 -1
  47. package/docs/Microsoft.Quantum.Canon/ApplyControlledOnBitString.md +23 -12
  48. package/docs/Microsoft.Quantum.Canon/ApplyControlledOnInt.md +1 -1
  49. package/docs/Microsoft.Quantum.Canon/ApplyP.md +1 -1
  50. package/docs/Microsoft.Quantum.Canon/ApplyPauli.md +1 -1
  51. package/docs/Microsoft.Quantum.Canon/ApplyPauliFromBitString.md +1 -1
  52. package/docs/Microsoft.Quantum.Canon/ApplyPauliFromInt.md +1 -1
  53. package/docs/Microsoft.Quantum.Canon/ApplyQFT.md +1 -1
  54. package/docs/Microsoft.Quantum.Canon/ApplyToEach.md +1 -1
  55. package/docs/Microsoft.Quantum.Canon/ApplyToEachA.md +1 -1
  56. package/docs/Microsoft.Quantum.Canon/ApplyToEachC.md +1 -1
  57. package/docs/Microsoft.Quantum.Canon/ApplyToEachCA.md +1 -1
  58. package/docs/Microsoft.Quantum.Canon/ApplyXorInPlace.md +1 -1
  59. package/docs/Microsoft.Quantum.Canon/ApplyXorInPlaceL.md +1 -1
  60. package/docs/Microsoft.Quantum.Canon/CX.md +1 -1
  61. package/docs/Microsoft.Quantum.Canon/CY.md +7 -5
  62. package/docs/Microsoft.Quantum.Canon/CZ.md +7 -5
  63. package/docs/Microsoft.Quantum.Canon/Fst.md +1 -1
  64. package/docs/Microsoft.Quantum.Canon/Snd.md +1 -1
  65. package/docs/Microsoft.Quantum.Canon/SwapReverseRegister.md +1 -1
  66. package/docs/Microsoft.Quantum.Convert/BigIntAsBoolArray.md +1 -1
  67. package/docs/Microsoft.Quantum.Convert/BoolArrayAsBigInt.md +1 -1
  68. package/docs/Microsoft.Quantum.Convert/BoolArrayAsInt.md +4 -3
  69. package/docs/Microsoft.Quantum.Convert/BoolArrayAsResultArray.md +1 -1
  70. package/docs/Microsoft.Quantum.Convert/BoolAsResult.md +1 -1
  71. package/docs/Microsoft.Quantum.Convert/ComplexAsComplexPolar.md +1 -1
  72. package/docs/Microsoft.Quantum.Convert/ComplexPolarAsComplex.md +1 -1
  73. package/docs/Microsoft.Quantum.Convert/IntAsBigInt.md +3 -3
  74. package/docs/Microsoft.Quantum.Convert/IntAsBoolArray.md +1 -1
  75. package/docs/Microsoft.Quantum.Convert/IntAsDouble.md +17 -3
  76. package/docs/Microsoft.Quantum.Convert/ResultArrayAsBoolArray.md +1 -1
  77. package/docs/Microsoft.Quantum.Convert/ResultArrayAsInt.md +1 -1
  78. package/docs/Microsoft.Quantum.Convert/ResultAsBool.md +1 -1
  79. package/docs/Microsoft.Quantum.Core/IsRangeEmpty.md +1 -1
  80. package/docs/Microsoft.Quantum.Core/Length.md +9 -4
  81. package/docs/Microsoft.Quantum.Core/RangeEnd.md +1 -1
  82. package/docs/Microsoft.Quantum.Core/RangeReverse.md +1 -1
  83. package/docs/Microsoft.Quantum.Core/RangeStart.md +6 -1
  84. package/docs/Microsoft.Quantum.Core/RangeStep.md +1 -1
  85. package/docs/Microsoft.Quantum.Core/Repeated.md +11 -4
  86. package/docs/Microsoft.Quantum.Diagnostics/CheckAllZero.md +1 -1
  87. package/docs/Microsoft.Quantum.Diagnostics/CheckOperationsAreEqual.md +1 -1
  88. package/docs/Microsoft.Quantum.Diagnostics/CheckZero.md +1 -1
  89. package/docs/Microsoft.Quantum.Diagnostics/DumpMachine.md +1 -1
  90. package/docs/Microsoft.Quantum.Diagnostics/DumpRegister.md +1 -1
  91. package/docs/Microsoft.Quantum.Diagnostics/Fact.md +1 -1
  92. package/docs/Microsoft.Quantum.Intrinsic/CCNOT.md +1 -1
  93. package/docs/Microsoft.Quantum.Intrinsic/CNOT.md +1 -1
  94. package/docs/Microsoft.Quantum.Intrinsic/Exp.md +1 -1
  95. package/docs/Microsoft.Quantum.Intrinsic/H.md +1 -1
  96. package/docs/Microsoft.Quantum.Intrinsic/I.md +1 -1
  97. package/docs/Microsoft.Quantum.Intrinsic/M.md +1 -1
  98. package/docs/Microsoft.Quantum.Intrinsic/Measure.md +1 -1
  99. package/docs/Microsoft.Quantum.Intrinsic/Message.md +1 -1
  100. package/docs/Microsoft.Quantum.Intrinsic/R.md +1 -1
  101. package/docs/Microsoft.Quantum.Intrinsic/R1.md +1 -1
  102. package/docs/Microsoft.Quantum.Intrinsic/R1Frac.md +1 -1
  103. package/docs/Microsoft.Quantum.Intrinsic/RFrac.md +1 -1
  104. package/docs/Microsoft.Quantum.Intrinsic/Reset.md +1 -1
  105. package/docs/Microsoft.Quantum.Intrinsic/ResetAll.md +1 -1
  106. package/docs/Microsoft.Quantum.Intrinsic/Rx.md +1 -1
  107. package/docs/Microsoft.Quantum.Intrinsic/Rxx.md +1 -1
  108. package/docs/Microsoft.Quantum.Intrinsic/Ry.md +1 -1
  109. package/docs/Microsoft.Quantum.Intrinsic/Ryy.md +1 -1
  110. package/docs/Microsoft.Quantum.Intrinsic/Rz.md +1 -1
  111. package/docs/Microsoft.Quantum.Intrinsic/Rzz.md +1 -1
  112. package/docs/Microsoft.Quantum.Intrinsic/S.md +1 -1
  113. package/docs/Microsoft.Quantum.Intrinsic/SWAP.md +1 -1
  114. package/docs/Microsoft.Quantum.Intrinsic/T.md +1 -1
  115. package/docs/Microsoft.Quantum.Intrinsic/X.md +1 -1
  116. package/docs/Microsoft.Quantum.Intrinsic/Y.md +1 -1
  117. package/docs/Microsoft.Quantum.Intrinsic/Z.md +1 -1
  118. package/docs/Microsoft.Quantum.Logical/Xor.md +7 -4
  119. package/docs/Microsoft.Quantum.Math/AbsComplex.md +1 -1
  120. package/docs/Microsoft.Quantum.Math/AbsComplexPolar.md +1 -1
  121. package/docs/Microsoft.Quantum.Math/AbsD.md +1 -1
  122. package/docs/Microsoft.Quantum.Math/AbsI.md +1 -1
  123. package/docs/Microsoft.Quantum.Math/AbsL.md +1 -1
  124. package/docs/Microsoft.Quantum.Math/AbsSquaredComplex.md +1 -1
  125. package/docs/Microsoft.Quantum.Math/AbsSquaredComplexPolar.md +1 -1
  126. package/docs/Microsoft.Quantum.Math/ApproximateFactorial.md +1 -1
  127. package/docs/Microsoft.Quantum.Math/ArcCos.md +1 -1
  128. package/docs/Microsoft.Quantum.Math/ArcCosh.md +1 -1
  129. package/docs/Microsoft.Quantum.Math/ArcSin.md +1 -1
  130. package/docs/Microsoft.Quantum.Math/ArcSinh.md +1 -1
  131. package/docs/Microsoft.Quantum.Math/ArcTan.md +1 -1
  132. package/docs/Microsoft.Quantum.Math/ArcTan2.md +1 -1
  133. package/docs/Microsoft.Quantum.Math/ArcTanh.md +1 -1
  134. package/docs/Microsoft.Quantum.Math/ArgComplex.md +1 -1
  135. package/docs/Microsoft.Quantum.Math/ArgComplexPolar.md +1 -1
  136. package/docs/Microsoft.Quantum.Math/Binom.md +1 -1
  137. package/docs/Microsoft.Quantum.Math/BitSizeI.md +1 -1
  138. package/docs/Microsoft.Quantum.Math/BitSizeL.md +1 -1
  139. package/docs/Microsoft.Quantum.Math/Ceiling.md +1 -1
  140. package/docs/Microsoft.Quantum.Math/Complex.md +1 -1
  141. package/docs/Microsoft.Quantum.Math/ComplexPolar.md +1 -1
  142. package/docs/Microsoft.Quantum.Math/ContinuedFractionConvergentI.md +1 -1
  143. package/docs/Microsoft.Quantum.Math/ContinuedFractionConvergentL.md +1 -1
  144. package/docs/Microsoft.Quantum.Math/Cos.md +1 -1
  145. package/docs/Microsoft.Quantum.Math/Cosh.md +1 -1
  146. package/docs/Microsoft.Quantum.Math/DivRemI.md +1 -1
  147. package/docs/Microsoft.Quantum.Math/DivRemL.md +1 -1
  148. package/docs/Microsoft.Quantum.Math/DividedByC.md +1 -1
  149. package/docs/Microsoft.Quantum.Math/DividedByCP.md +1 -1
  150. package/docs/Microsoft.Quantum.Math/E.md +10 -6
  151. package/docs/Microsoft.Quantum.Math/ExpModI.md +1 -1
  152. package/docs/Microsoft.Quantum.Math/ExpModL.md +1 -1
  153. package/docs/Microsoft.Quantum.Math/ExtendedGreatestCommonDivisorI.md +1 -1
  154. package/docs/Microsoft.Quantum.Math/ExtendedGreatestCommonDivisorL.md +1 -1
  155. package/docs/Microsoft.Quantum.Math/FactorialI.md +1 -1
  156. package/docs/Microsoft.Quantum.Math/FactorialL.md +1 -1
  157. package/docs/Microsoft.Quantum.Math/Floor.md +1 -1
  158. package/docs/Microsoft.Quantum.Math/GreatestCommonDivisorI.md +1 -1
  159. package/docs/Microsoft.Quantum.Math/GreatestCommonDivisorL.md +1 -1
  160. package/docs/Microsoft.Quantum.Math/HammingWeightI.md +1 -1
  161. package/docs/Microsoft.Quantum.Math/InverseModI.md +1 -1
  162. package/docs/Microsoft.Quantum.Math/InverseModL.md +1 -1
  163. package/docs/Microsoft.Quantum.Math/IsCoprimeI.md +1 -1
  164. package/docs/Microsoft.Quantum.Math/IsCoprimeL.md +1 -1
  165. package/docs/Microsoft.Quantum.Math/IsInfinite.md +1 -1
  166. package/docs/Microsoft.Quantum.Math/IsNaN.md +1 -1
  167. package/docs/Microsoft.Quantum.Math/LargestFixedPoint.md +1 -1
  168. package/docs/Microsoft.Quantum.Math/Lg.md +1 -1
  169. package/docs/Microsoft.Quantum.Math/Log.md +1 -1
  170. package/docs/Microsoft.Quantum.Math/Log10.md +1 -1
  171. package/docs/Microsoft.Quantum.Math/LogFactorialD.md +1 -1
  172. package/docs/Microsoft.Quantum.Math/LogGammaD.md +1 -1
  173. package/docs/Microsoft.Quantum.Math/LogOf2.md +9 -5
  174. package/docs/Microsoft.Quantum.Math/Max.md +1 -1
  175. package/docs/Microsoft.Quantum.Math/MaxD.md +1 -1
  176. package/docs/Microsoft.Quantum.Math/MaxI.md +1 -1
  177. package/docs/Microsoft.Quantum.Math/MaxL.md +1 -1
  178. package/docs/Microsoft.Quantum.Math/Min.md +1 -1
  179. package/docs/Microsoft.Quantum.Math/MinD.md +1 -1
  180. package/docs/Microsoft.Quantum.Math/MinI.md +1 -1
  181. package/docs/Microsoft.Quantum.Math/MinL.md +1 -1
  182. package/docs/Microsoft.Quantum.Math/MinusC.md +1 -1
  183. package/docs/Microsoft.Quantum.Math/MinusCP.md +1 -1
  184. package/docs/Microsoft.Quantum.Math/ModulusI.md +1 -1
  185. package/docs/Microsoft.Quantum.Math/ModulusL.md +1 -1
  186. package/docs/Microsoft.Quantum.Math/NegationC.md +1 -1
  187. package/docs/Microsoft.Quantum.Math/NegationCP.md +1 -1
  188. package/docs/Microsoft.Quantum.Math/PI.md +11 -6
  189. package/docs/Microsoft.Quantum.Math/PNorm.md +1 -1
  190. package/docs/Microsoft.Quantum.Math/PNormalized.md +1 -1
  191. package/docs/Microsoft.Quantum.Math/PlusC.md +1 -1
  192. package/docs/Microsoft.Quantum.Math/PlusCP.md +1 -1
  193. package/docs/Microsoft.Quantum.Math/PowC.md +1 -1
  194. package/docs/Microsoft.Quantum.Math/PowCP.md +1 -1
  195. package/docs/Microsoft.Quantum.Math/RealMod.md +1 -1
  196. package/docs/Microsoft.Quantum.Math/Round.md +3 -3
  197. package/docs/Microsoft.Quantum.Math/SignD.md +1 -1
  198. package/docs/Microsoft.Quantum.Math/SignI.md +1 -1
  199. package/docs/Microsoft.Quantum.Math/SignL.md +1 -1
  200. package/docs/Microsoft.Quantum.Math/Sin.md +1 -1
  201. package/docs/Microsoft.Quantum.Math/Sinh.md +1 -1
  202. package/docs/Microsoft.Quantum.Math/SmallestFixedPoint.md +1 -1
  203. package/docs/Microsoft.Quantum.Math/Sqrt.md +1 -1
  204. package/docs/Microsoft.Quantum.Math/SquaredNorm.md +1 -1
  205. package/docs/Microsoft.Quantum.Math/Tan.md +1 -1
  206. package/docs/Microsoft.Quantum.Math/Tanh.md +1 -1
  207. package/docs/Microsoft.Quantum.Math/TimesC.md +1 -1
  208. package/docs/Microsoft.Quantum.Math/TimesCP.md +1 -1
  209. package/docs/Microsoft.Quantum.Math/TrailingZeroCountI.md +1 -1
  210. package/docs/Microsoft.Quantum.Math/TrailingZeroCountL.md +1 -1
  211. package/docs/Microsoft.Quantum.Math/Truncate.md +1 -1
  212. package/docs/Microsoft.Quantum.Measurement/MResetEachZ.md +6 -1
  213. package/docs/Microsoft.Quantum.Measurement/MResetX.md +1 -1
  214. package/docs/Microsoft.Quantum.Measurement/MResetY.md +1 -1
  215. package/docs/Microsoft.Quantum.Measurement/MResetZ.md +1 -1
  216. package/docs/Microsoft.Quantum.Measurement/MeasureAllZ.md +7 -6
  217. package/docs/Microsoft.Quantum.Measurement/MeasureEachZ.md +19 -3
  218. package/docs/Microsoft.Quantum.Measurement/MeasureInteger.md +1 -1
  219. package/docs/Microsoft.Quantum.Random/DrawRandomDouble.md +4 -6
  220. package/docs/Microsoft.Quantum.Random/DrawRandomInt.md +4 -6
  221. package/docs/Microsoft.Quantum.ResourceEstimation/AccountForEstimates.md +1 -1
  222. package/docs/Microsoft.Quantum.ResourceEstimation/AuxQubitCount.md +1 -1
  223. package/docs/Microsoft.Quantum.ResourceEstimation/BeginEstimateCaching.md +1 -1
  224. package/docs/Microsoft.Quantum.ResourceEstimation/BeginRepeatEstimates.md +1 -2
  225. package/docs/Microsoft.Quantum.ResourceEstimation/CczCount.md +1 -1
  226. package/docs/Microsoft.Quantum.ResourceEstimation/EndEstimateCaching.md +1 -1
  227. package/docs/Microsoft.Quantum.ResourceEstimation/EndRepeatEstimates.md +1 -2
  228. package/docs/Microsoft.Quantum.ResourceEstimation/MeasurementCount.md +1 -1
  229. package/docs/Microsoft.Quantum.ResourceEstimation/PSSPCLayout.md +1 -1
  230. package/docs/Microsoft.Quantum.ResourceEstimation/RepeatEstimates.md +1 -2
  231. package/docs/Microsoft.Quantum.ResourceEstimation/RotationCount.md +1 -1
  232. package/docs/Microsoft.Quantum.ResourceEstimation/RotationDepth.md +1 -1
  233. package/docs/Microsoft.Quantum.ResourceEstimation/SingleVariant.md +1 -1
  234. package/docs/Microsoft.Quantum.ResourceEstimation/TCount.md +1 -1
  235. package/docs/Microsoft.Quantum.Unstable.Arithmetic/AddLE.md +1 -1
  236. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfEqualL.md +1 -1
  237. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfEqualLE.md +1 -1
  238. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterL.md +1 -1
  239. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterLE.md +1 -1
  240. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterOrEqualL.md +1 -1
  241. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterOrEqualLE.md +1 -1
  242. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessL.md +1 -1
  243. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessLE.md +1 -1
  244. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessOrEqualL.md +1 -1
  245. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessOrEqualLE.md +1 -1
  246. package/docs/Microsoft.Quantum.Unstable.Arithmetic/FourierTDIncByLE.md +3 -3
  247. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByI.md +1 -1
  248. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByIUsingIncByLE.md +1 -1
  249. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByL.md +1 -1
  250. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByLE.md +1 -1
  251. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByLEUsingAddLE.md +4 -4
  252. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByLUsingIncByLE.md +1 -1
  253. package/docs/Microsoft.Quantum.Unstable.Arithmetic/LookAheadDKRSAddLE.md +4 -4
  254. package/docs/Microsoft.Quantum.Unstable.Arithmetic/MAJ.md +1 -1
  255. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ReflectAboutInteger.md +3 -5
  256. package/docs/Microsoft.Quantum.Unstable.Arithmetic/RippleCarryCGAddLE.md +3 -3
  257. package/docs/Microsoft.Quantum.Unstable.Arithmetic/RippleCarryCGIncByLE.md +3 -3
  258. package/docs/Microsoft.Quantum.Unstable.Arithmetic/RippleCarryTTKIncByLE.md +4 -5
  259. package/docs/Microsoft.Quantum.Unstable.StatePreparation/ApproximatelyPreparePureStateCP.md +3 -3
  260. package/docs/Microsoft.Quantum.Unstable.StatePreparation/PreparePureStateD.md +3 -3
  261. package/docs/Microsoft.Quantum.Unstable.TableLookup/Select.md +8 -8
  262. package/lib/node/qsc_wasm_bg.wasm +0 -0
  263. package/lib/web/qsc_wasm_bg.wasm +0 -0
  264. package/package.json +1 -1
@@ -1745,8 +1745,8 @@ export default {
1745
1745
  "items": [
1746
1746
  {
1747
1747
  "type": "text-content",
1748
- "asHtml": "<p>Just like with single qubits, Dirac notation provides a useful shorthand for writing down states of multi-qubit systems.</p>\n<p>As we&#39;ve seen earlier, multi-qubit systems have their own canonical bases, and the basis states can be represented as tensor products of single-qubit basis states. Any multi-qubit system can be represented as a linear combination of these basis states:</p>\n<p>$$\n\\begin{bmatrix} x_0 \\\\ x_1 \\\\ x_2 \\\\ x_3 \\end{bmatrix} =\nx_0\\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} +\nx_1\\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix} +\nx_2\\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix} +\nx_3\\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} =\nx_0|0\\rangle \\otimes |0\\rangle +\nx_1|0\\rangle \\otimes |1\\rangle +\nx_2|1\\rangle \\otimes |0\\rangle +\nx_3|1\\rangle \\otimes |1\\rangle\n$$</p>\n<p>To simplify this, tensor products of basis states have their own notation:</p>\n<p>$$|0\\rangle \\otimes |0\\rangle = |00\\rangle$$\n$$|0\\rangle \\otimes |1\\rangle = |01\\rangle$$\n$$|1\\rangle \\otimes |0\\rangle = |10\\rangle$$\n$$|1\\rangle \\otimes |1\\rangle = |11\\rangle$$</p>\n<p>$$|0\\rangle \\otimes |0\\rangle \\otimes |0\\rangle = |000\\rangle$$</p>\n<p>And so on.</p>\n<p>Or, more generally:</p>\n<p>$$|i_0\\rangle \\otimes |i_1\\rangle \\otimes \\dotsb \\otimes |i_n\\rangle = |i_0i_1...i_n\\rangle$$</p>\n<p>Using this notation simplifies our example:</p>\n<p>$$\n\\begin{bmatrix} x_0 \\\\ x_1 \\\\ x_2 \\\\ x_3 \\end{bmatrix} =\nx_0|00\\rangle + x_1|01\\rangle + x_2|10\\rangle + x_3|11\\rangle\n$$</p>\n<p>Just like with single qubits, we can put arbitrary symbols within the kets the same way variables are used in algebra.\nWhether a ket represents a single qubit or an entire system depends on the context.\nSome ket symbols have a commonly accepted usage, such as the symbols for the Bell basis:</p>\n<p>$$|\\phi^+\\rangle = \\frac{1}{\\sqrt{2}}\\big(|00\\rangle + |11\\rangle\\big)$$\n$$|\\phi^-\\rangle = \\frac{1}{\\sqrt{2}}\\big(|00\\rangle - |11\\rangle\\big)$$\n$$|\\psi^+\\rangle = \\frac{1}{\\sqrt{2}}\\big(|01\\rangle + |10\\rangle\\big)$$\n$$|\\psi^-\\rangle = \\frac{1}{\\sqrt{2}}\\big(|01\\rangle - |10\\rangle\\big)$$</p>\n<blockquote>\n<h2>Endianness</h2>\n<p>In classical computing, endianness refers to the order of bits (or bytes) when representing numbers in binary. You&#39;re probably familiar with the typical way of writing numbers in binary: $0 = 0_2$, $1 = 1_2$, $2 = 10_2$, $3 = 11_2$, $4 = 100_2$, $5 = 101_2$, $6 = 110_2$, etc. This is known as <strong>big-endian format</strong>. In big-endian format, the <em>most significant</em> bits come first. For example: $110_2 = 1 \\cdot 4 + 1 \\cdot 2 + 0 \\cdot 1 = 4 + 2 = 6$.</p>\n<p>There is an alternate way of writing binary numbers - <strong>little-endian format</strong>. In little-endian format, the <em>least significant</em> bits come first. For example, $2$ would be written as $01$, $4$ as $001$, and $6$ as $011$. To put it another way, in little endian format, the number is written backwards compared to the big-endian format.</p>\n<p>In Dirac notation for multi-qubit systems, it&#39;s common to see integer numbers within the kets instead of bit sequences. What those numbers mean depends on the context - whether the notation used is big-endian or little-endian.</p>\n<p>Examples with a 3 qubit system:</p>\n<table>\n <tr>\n <th>Integer Ket</th>\n <td>$|0\\rangle$</td>\n <td>$|1\\rangle$</td>\n <td>$|2\\rangle$</td>\n <td>$|3\\rangle$</td>\n <td>$|4\\rangle$</td>\n <td>$|5\\rangle$</td>\n <td>$|6\\rangle$</td>\n <td>$|7\\rangle$</td>\n </tr>\n <tr>\n <th>Big-endian</th>\n <td>$|000\\rangle$</td>\n <td>$|001\\rangle$</td>\n <td>$|010\\rangle$</td>\n <td>$|011\\rangle$</td>\n <td>$|100\\rangle$</td>\n <td>$|101\\rangle$</td>\n <td>$|110\\rangle$</td>\n <td>$|111\\rangle$</td>\n </tr>\n <tr>\n <th>Little-endian</th>\n <td>$|000\\rangle$</td>\n <td>$|100\\rangle$</td>\n <td>$|010\\rangle$</td>\n <td>$|110\\rangle$</td>\n <td>$|001\\rangle$</td>\n <td>$|101\\rangle$</td>\n <td>$|011\\rangle$</td>\n <td>$|111\\rangle$</td>\n </tr>\n</table>\n\n<p>Multi-qubit quantum systems that store superpositions of numbers are often referred to as <strong>quantum registers</strong>.</p>\n</blockquote>\n",
1749
- "asMarkdown": "\nJust like with single qubits, Dirac notation provides a useful shorthand for writing down states of multi-qubit systems.\n\nAs we've seen earlier, multi-qubit systems have their own canonical bases, and the basis states can be represented as tensor products of single-qubit basis states. Any multi-qubit system can be represented as a linear combination of these basis states:\n\n$$\n\\begin{bmatrix} x_0 \\\\\\ x_1 \\\\\\ x_2 \\\\\\ x_3 \\end{bmatrix} =\nx_0\\begin{bmatrix} 1 \\\\\\ 0 \\\\\\ 0 \\\\\\ 0 \\end{bmatrix} +\nx_1\\begin{bmatrix} 0 \\\\\\ 1 \\\\\\ 0 \\\\\\ 0 \\end{bmatrix} +\nx_2\\begin{bmatrix} 0 \\\\\\ 0 \\\\\\ 1 \\\\\\ 0 \\end{bmatrix} +\nx_3\\begin{bmatrix} 0 \\\\\\ 0 \\\\\\ 0 \\\\\\ 1 \\end{bmatrix} =\nx_0|0\\rangle \\otimes |0\\rangle +\nx_1|0\\rangle \\otimes |1\\rangle +\nx_2|1\\rangle \\otimes |0\\rangle +\nx_3|1\\rangle \\otimes |1\\rangle\n$$\n\nTo simplify this, tensor products of basis states have their own notation:\n\n$$|0\\rangle \\otimes |0\\rangle = |00\\rangle$$\n$$|0\\rangle \\otimes |1\\rangle = |01\\rangle$$\n$$|1\\rangle \\otimes |0\\rangle = |10\\rangle$$\n$$|1\\rangle \\otimes |1\\rangle = |11\\rangle$$\n\n$$|0\\rangle \\otimes |0\\rangle \\otimes |0\\rangle = |000\\rangle$$\n\nAnd so on.\n\nOr, more generally:\n\n$$|i_0\\rangle \\otimes |i_1\\rangle \\otimes \\dotsb \\otimes |i_n\\rangle = |i_0i_1...i_n\\rangle$$\n\nUsing this notation simplifies our example:\n\n$$\n\\begin{bmatrix} x_0 \\\\\\ x_1 \\\\\\ x_2 \\\\\\ x_3 \\end{bmatrix} =\nx_0|00\\rangle + x_1|01\\rangle + x_2|10\\rangle + x_3|11\\rangle\n$$\n\nJust like with single qubits, we can put arbitrary symbols within the kets the same way variables are used in algebra.\nWhether a ket represents a single qubit or an entire system depends on the context.\nSome ket symbols have a commonly accepted usage, such as the symbols for the Bell basis:\n\n$$|\\phi^+\\rangle = \\frac{1}{\\sqrt{2}}\\big(|00\\rangle + |11\\rangle\\big)$$\n$$|\\phi^-\\rangle = \\frac{1}{\\sqrt{2}}\\big(|00\\rangle - |11\\rangle\\big)$$\n$$|\\psi^+\\rangle = \\frac{1}{\\sqrt{2}}\\big(|01\\rangle + |10\\rangle\\big)$$\n$$|\\psi^-\\rangle = \\frac{1}{\\sqrt{2}}\\big(|01\\rangle - |10\\rangle\\big)$$\n\n>## Endianness\n>\n> In classical computing, endianness refers to the order of bits (or bytes) when representing numbers in binary. You're probably familiar with the typical way of writing numbers in binary: $0 = 0_2$, $1 = 1_2$, $2 = 10_2$, $3 = 11_2$, $4 = 100_2$, $5 = 101_2$, $6 = 110_2$, etc. This is known as **big-endian format**. In big-endian format, the *most significant* bits come first. For example: $110_2 = 1 \\cdot 4 + 1 \\cdot 2 + 0 \\cdot 1 = 4 + 2 = 6$.\n>\n> There is an alternate way of writing binary numbers - **little-endian format**. In little-endian format, the *least significant* bits come first. For example, $2$ would be written as $01$, $4$ as $001$, and $6$ as $011$. To put it another way, in little endian format, the number is written backwards compared to the big-endian format.\n>\n> In Dirac notation for multi-qubit systems, it's common to see integer numbers within the kets instead of bit sequences. What those numbers mean depends on the context - whether the notation used is big-endian or little-endian.\n>\n> Examples with a 3 qubit system:\n>\n> <table>\n> <tr>\n> <th>Integer Ket</th>\n> <td>$|0\\rangle$</td>\n> <td>$|1\\rangle$</td>\n> <td>$|2\\rangle$</td>\n> <td>$|3\\rangle$</td>\n> <td>$|4\\rangle$</td>\n> <td>$|5\\rangle$</td>\n> <td>$|6\\rangle$</td>\n> <td>$|7\\rangle$</td>\n> </tr>\n> <tr>\n> <th>Big-endian</th>\n> <td>$|000\\rangle$</td>\n> <td>$|001\\rangle$</td>\n> <td>$|010\\rangle$</td>\n> <td>$|011\\rangle$</td>\n> <td>$|100\\rangle$</td>\n> <td>$|101\\rangle$</td>\n> <td>$|110\\rangle$</td>\n> <td>$|111\\rangle$</td>\n> </tr>\n> <tr>\n> <th>Little-endian</th>\n> <td>$|000\\rangle$</td>\n> <td>$|100\\rangle$</td>\n> <td>$|010\\rangle$</td>\n> <td>$|110\\rangle$</td>\n> <td>$|001\\rangle$</td>\n> <td>$|101\\rangle$</td>\n> <td>$|011\\rangle$</td>\n> <td>$|111\\rangle$</td>\n> </tr>\n></table>\n>\n> Multi-qubit quantum systems that store superpositions of numbers are often referred to as **quantum registers**."
1748
+ "asHtml": "<p>Just like with single qubits, Dirac notation provides a useful shorthand for writing down states of multi-qubit systems.</p>\n<p>As we&#39;ve seen earlier, multi-qubit systems have their own canonical bases, and the basis states can be represented as tensor products of single-qubit basis states. Any multi-qubit system can be represented as a linear combination of these basis states:</p>\n<p>$$\n\\begin{bmatrix} x_0 \\\\ x_1 \\\\ x_2 \\\\ x_3 \\end{bmatrix} =\nx_0\\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} +\nx_1\\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix} +\nx_2\\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix} +\nx_3\\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} =\nx_0|0\\rangle \\otimes |0\\rangle +\nx_1|0\\rangle \\otimes |1\\rangle +\nx_2|1\\rangle \\otimes |0\\rangle +\nx_3|1\\rangle \\otimes |1\\rangle\n$$</p>\n<p>To simplify this, tensor products of basis states have their own notation:</p>\n<p>$$|0\\rangle \\otimes |0\\rangle = |00\\rangle$$\n$$|0\\rangle \\otimes |1\\rangle = |01\\rangle$$\n$$|1\\rangle \\otimes |0\\rangle = |10\\rangle$$\n$$|1\\rangle \\otimes |1\\rangle = |11\\rangle$$</p>\n<p>$$|0\\rangle \\otimes |0\\rangle \\otimes |0\\rangle = |000\\rangle$$</p>\n<p>And so on.</p>\n<p>Or, more generally:</p>\n<p>$$|i_0\\rangle \\otimes |i_1\\rangle \\otimes \\dotsb \\otimes |i_n\\rangle = |i_0i_1...i_n\\rangle$$</p>\n<p>Using this notation simplifies our example:</p>\n<p>$$\n\\begin{bmatrix} x_0 \\\\ x_1 \\\\ x_2 \\\\ x_3 \\end{bmatrix} =\nx_0|00\\rangle + x_1|01\\rangle + x_2|10\\rangle + x_3|11\\rangle\n$$</p>\n<p>Just like with single qubits, we can put arbitrary symbols within the kets the same way variables are used in algebra.\nWhether a ket represents a single qubit or an entire system depends on the context.\nSome ket symbols have a commonly accepted usage, such as the symbols for the Bell basis:</p>\n<p>$$|\\Phi^+\\rangle = \\frac{1}{\\sqrt{2}}\\big(|00\\rangle + |11\\rangle\\big)$$\n$$|\\Phi^-\\rangle = \\frac{1}{\\sqrt{2}}\\big(|00\\rangle - |11\\rangle\\big)$$\n$$|\\Psi^+\\rangle = \\frac{1}{\\sqrt{2}}\\big(|01\\rangle + |10\\rangle\\big)$$\n$$|\\Psi^-\\rangle = \\frac{1}{\\sqrt{2}}\\big(|01\\rangle - |10\\rangle\\big)$$</p>\n<blockquote>\n<h2>Endianness</h2>\n<p>In classical computing, endianness refers to the order of bits (or bytes) when representing numbers in binary. You&#39;re probably familiar with the typical way of writing numbers in binary: $0 = 0_2$, $1 = 1_2$, $2 = 10_2$, $3 = 11_2$, $4 = 100_2$, $5 = 101_2$, $6 = 110_2$, etc. This is known as <strong>big-endian format</strong>. In big-endian format, the <em>most significant</em> bits come first. For example: $110_2 = 1 \\cdot 4 + 1 \\cdot 2 + 0 \\cdot 1 = 4 + 2 = 6$.</p>\n<p>There is an alternate way of writing binary numbers - <strong>little-endian format</strong>. In little-endian format, the <em>least significant</em> bits come first. For example, $2$ would be written as $01$, $4$ as $001$, and $6$ as $011$. To put it another way, in little endian format, the number is written backwards compared to the big-endian format.</p>\n<p>In Dirac notation for multi-qubit systems, it&#39;s common to see integer numbers within the kets instead of bit sequences. What those numbers mean depends on the context - whether the notation used is big-endian or little-endian.</p>\n<p>Examples with a 3 qubit system:</p>\n<table>\n <tr>\n <th>Integer Ket</th>\n <td>$|0\\rangle$</td>\n <td>$|1\\rangle$</td>\n <td>$|2\\rangle$</td>\n <td>$|3\\rangle$</td>\n <td>$|4\\rangle$</td>\n <td>$|5\\rangle$</td>\n <td>$|6\\rangle$</td>\n <td>$|7\\rangle$</td>\n </tr>\n <tr>\n <th>Big-endian</th>\n <td>$|000\\rangle$</td>\n <td>$|001\\rangle$</td>\n <td>$|010\\rangle$</td>\n <td>$|011\\rangle$</td>\n <td>$|100\\rangle$</td>\n <td>$|101\\rangle$</td>\n <td>$|110\\rangle$</td>\n <td>$|111\\rangle$</td>\n </tr>\n <tr>\n <th>Little-endian</th>\n <td>$|000\\rangle$</td>\n <td>$|100\\rangle$</td>\n <td>$|010\\rangle$</td>\n <td>$|110\\rangle$</td>\n <td>$|001\\rangle$</td>\n <td>$|101\\rangle$</td>\n <td>$|011\\rangle$</td>\n <td>$|111\\rangle$</td>\n </tr>\n</table>\n\n<p>Multi-qubit quantum systems that store superpositions of numbers are often referred to as <strong>quantum registers</strong>.</p>\n</blockquote>\n",
1749
+ "asMarkdown": "\nJust like with single qubits, Dirac notation provides a useful shorthand for writing down states of multi-qubit systems.\n\nAs we've seen earlier, multi-qubit systems have their own canonical bases, and the basis states can be represented as tensor products of single-qubit basis states. Any multi-qubit system can be represented as a linear combination of these basis states:\n\n$$\n\\begin{bmatrix} x_0 \\\\\\ x_1 \\\\\\ x_2 \\\\\\ x_3 \\end{bmatrix} =\nx_0\\begin{bmatrix} 1 \\\\\\ 0 \\\\\\ 0 \\\\\\ 0 \\end{bmatrix} +\nx_1\\begin{bmatrix} 0 \\\\\\ 1 \\\\\\ 0 \\\\\\ 0 \\end{bmatrix} +\nx_2\\begin{bmatrix} 0 \\\\\\ 0 \\\\\\ 1 \\\\\\ 0 \\end{bmatrix} +\nx_3\\begin{bmatrix} 0 \\\\\\ 0 \\\\\\ 0 \\\\\\ 1 \\end{bmatrix} =\nx_0|0\\rangle \\otimes |0\\rangle +\nx_1|0\\rangle \\otimes |1\\rangle +\nx_2|1\\rangle \\otimes |0\\rangle +\nx_3|1\\rangle \\otimes |1\\rangle\n$$\n\nTo simplify this, tensor products of basis states have their own notation:\n\n$$|0\\rangle \\otimes |0\\rangle = |00\\rangle$$\n$$|0\\rangle \\otimes |1\\rangle = |01\\rangle$$\n$$|1\\rangle \\otimes |0\\rangle = |10\\rangle$$\n$$|1\\rangle \\otimes |1\\rangle = |11\\rangle$$\n\n$$|0\\rangle \\otimes |0\\rangle \\otimes |0\\rangle = |000\\rangle$$\n\nAnd so on.\n\nOr, more generally:\n\n$$|i_0\\rangle \\otimes |i_1\\rangle \\otimes \\dotsb \\otimes |i_n\\rangle = |i_0i_1...i_n\\rangle$$\n\nUsing this notation simplifies our example:\n\n$$\n\\begin{bmatrix} x_0 \\\\\\ x_1 \\\\\\ x_2 \\\\\\ x_3 \\end{bmatrix} =\nx_0|00\\rangle + x_1|01\\rangle + x_2|10\\rangle + x_3|11\\rangle\n$$\n\nJust like with single qubits, we can put arbitrary symbols within the kets the same way variables are used in algebra.\nWhether a ket represents a single qubit or an entire system depends on the context.\nSome ket symbols have a commonly accepted usage, such as the symbols for the Bell basis:\n\n$$|\\Phi^+\\rangle = \\frac{1}{\\sqrt{2}}\\big(|00\\rangle + |11\\rangle\\big)$$\n$$|\\Phi^-\\rangle = \\frac{1}{\\sqrt{2}}\\big(|00\\rangle - |11\\rangle\\big)$$\n$$|\\Psi^+\\rangle = \\frac{1}{\\sqrt{2}}\\big(|01\\rangle + |10\\rangle\\big)$$\n$$|\\Psi^-\\rangle = \\frac{1}{\\sqrt{2}}\\big(|01\\rangle - |10\\rangle\\big)$$\n\n>## Endianness\n>\n> In classical computing, endianness refers to the order of bits (or bytes) when representing numbers in binary. You're probably familiar with the typical way of writing numbers in binary: $0 = 0_2$, $1 = 1_2$, $2 = 10_2$, $3 = 11_2$, $4 = 100_2$, $5 = 101_2$, $6 = 110_2$, etc. This is known as **big-endian format**. In big-endian format, the *most significant* bits come first. For example: $110_2 = 1 \\cdot 4 + 1 \\cdot 2 + 0 \\cdot 1 = 4 + 2 = 6$.\n>\n> There is an alternate way of writing binary numbers - **little-endian format**. In little-endian format, the *least significant* bits come first. For example, $2$ would be written as $01$, $4$ as $001$, and $6$ as $011$. To put it another way, in little endian format, the number is written backwards compared to the big-endian format.\n>\n> In Dirac notation for multi-qubit systems, it's common to see integer numbers within the kets instead of bit sequences. What those numbers mean depends on the context - whether the notation used is big-endian or little-endian.\n>\n> Examples with a 3 qubit system:\n>\n> <table>\n> <tr>\n> <th>Integer Ket</th>\n> <td>$|0\\rangle$</td>\n> <td>$|1\\rangle$</td>\n> <td>$|2\\rangle$</td>\n> <td>$|3\\rangle$</td>\n> <td>$|4\\rangle$</td>\n> <td>$|5\\rangle$</td>\n> <td>$|6\\rangle$</td>\n> <td>$|7\\rangle$</td>\n> </tr>\n> <tr>\n> <th>Big-endian</th>\n> <td>$|000\\rangle$</td>\n> <td>$|001\\rangle$</td>\n> <td>$|010\\rangle$</td>\n> <td>$|011\\rangle$</td>\n> <td>$|100\\rangle$</td>\n> <td>$|101\\rangle$</td>\n> <td>$|110\\rangle$</td>\n> <td>$|111\\rangle$</td>\n> </tr>\n> <tr>\n> <th>Little-endian</th>\n> <td>$|000\\rangle$</td>\n> <td>$|100\\rangle$</td>\n> <td>$|010\\rangle$</td>\n> <td>$|110\\rangle$</td>\n> <td>$|001\\rangle$</td>\n> <td>$|101\\rangle$</td>\n> <td>$|011\\rangle$</td>\n> <td>$|111\\rangle$</td>\n> </tr>\n></table>\n>\n> Multi-qubit quantum systems that store superpositions of numbers are often referred to as **quantum registers**."
1750
1750
  }
1751
1751
  ]
1752
1752
  },
@@ -1934,6 +1934,108 @@ export default {
1934
1934
  ]
1935
1935
  }
1936
1936
  },
1937
+ {
1938
+ "type": "lesson",
1939
+ "id": "multi_qubit_systems__modifying_entangled_states",
1940
+ "title": "Modifying Entangled States",
1941
+ "items": [
1942
+ {
1943
+ "type": "text-content",
1944
+ "asHtml": "<p>Entangled quantum states can be manipulated using single-qubit gates. For example, each state in the Bell basis is entangled and can be transformed into another Bell state through the application of single-qubit gates. In this lesson, you&#39;ll learn how to do that. (And we will learn more about applying single-qubit gates to multi-qubit states in the next kata.)</p>\n",
1945
+ "asMarkdown": "\nEntangled quantum states can be manipulated using single-qubit gates. For example, each state in the Bell basis is entangled and can be transformed into another Bell state through the application of single-qubit gates. In this lesson, you'll learn how to do that. (And we will learn more about applying single-qubit gates to multi-qubit states in the next kata.)"
1946
+ }
1947
+ ]
1948
+ },
1949
+ {
1950
+ "type": "exercise",
1951
+ "id": "multi_qubit_systems__bell_state_change_1 ",
1952
+ "title": "Bell State Change 1",
1953
+ "description": {
1954
+ "type": "text-content",
1955
+ "asHtml": "<p><strong>Input:</strong> Two entangled qubits in Bell state $|\\Phi^{+}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|00\\rangle + |11\\rangle\\big)$.</p>\n<p><strong>Goal:</strong> Change the two-qubit state to $|\\Phi^{-}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|00\\rangle - |11\\rangle\\big)$.</p>\n",
1956
+ "asMarkdown": "**Input:** Two entangled qubits in Bell state $|\\Phi^{+}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|00\\rangle + |11\\rangle\\big)$.\n\n**Goal:** Change the two-qubit state to $|\\Phi^{-}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|00\\rangle - |11\\rangle\\big)$.\n"
1957
+ },
1958
+ "sourceIds": [
1959
+ "multi_qubit_systems__bell_state_change_1__Verification.qs",
1960
+ "KatasLibrary.qs"
1961
+ ],
1962
+ "placeholderCode": "namespace Kata {\n operation BellStateChange1 (qs : Qubit[]) : Unit is Adj + Ctl {\n // Implement your solution here...\n \n }\n}",
1963
+ "explainedSolution": {
1964
+ "type": "explained-solution",
1965
+ "items": [
1966
+ {
1967
+ "type": "text-content",
1968
+ "asHtml": "<p>We recognize that the goal is another Bell state. In fact, it is one of the four Bell states.</p>\n<p>We remember from the Single-Qubit Gates kata that the Pauli Z gate will change the state of the $|1\\rangle$ basis state of a single qubit, so this gate seems like a good candidate for what we want to achieve. This gate leaves the sign of the $|0\\rangle$ basis state of a superposition unchanged, but flips the sign of the $|1\\rangle$ basis state of the superposition.</p>\n<p>Don&#39;t forget that the Z gate acts on only a single qubit, and we have two here.\nLet&#39;s also remember how the Bell state is made up from its individual qubits.</p>\n<p>If the two qubits are A and B, where A is <code>qs[0]</code> and B is <code>qs[1]</code>, we can write that\n$|\\Phi^{+}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|0_{A}0_{B}\\rangle + |1_{A}1_{B}\\rangle\\big)$.\nIf we apply the Z gate to the qubit A, it will flip the phase of the basis state $|1_A\\rangle$. As this phase is in a sense spread across the entangled state, with $|1_A\\rangle$ basis state being part of the second half of the superposition, this application has the effect of flipping the sign of the whole basis state $|1_A1_B\\rangle$, as you can see by running the solution below.</p>\n<p>The exact same calculations can be done if we apply Z to the qubit B, so that&#39;s another possible solution.</p>\n",
1969
+ "asMarkdown": "\nWe recognize that the goal is another Bell state. In fact, it is one of the four Bell states.\n\nWe remember from the Single-Qubit Gates kata that the Pauli Z gate will change the state of the $|1\\rangle$ basis state of a single qubit, so this gate seems like a good candidate for what we want to achieve. This gate leaves the sign of the $|0\\rangle$ basis state of a superposition unchanged, but flips the sign of the $|1\\rangle$ basis state of the superposition.\n\nDon't forget that the Z gate acts on only a single qubit, and we have two here.\nLet's also remember how the Bell state is made up from its individual qubits.\n\nIf the two qubits are A and B, where A is `qs[0]` and B is `qs[1]`, we can write that\n$|\\Phi^{+}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|0_{A}0_{B}\\rangle + |1_{A}1_{B}\\rangle\\big)$.\nIf we apply the Z gate to the qubit A, it will flip the phase of the basis state $|1_A\\rangle$. As this phase is in a sense spread across the entangled state, with $|1_A\\rangle$ basis state being part of the second half of the superposition, this application has the effect of flipping the sign of the whole basis state $|1_A1_B\\rangle$, as you can see by running the solution below.\n\nThe exact same calculations can be done if we apply Z to the qubit B, so that's another possible solution."
1970
+ },
1971
+ {
1972
+ "type": "solution",
1973
+ "id": "multi_qubit_systems__bell_state_change_1_solution",
1974
+ "code": "namespace Kata {\n operation BellStateChange1 (qs : Qubit[]) : Unit is Adj + Ctl {\n Z(qs[0]);\n }\n}"
1975
+ }
1976
+ ]
1977
+ }
1978
+ },
1979
+ {
1980
+ "type": "exercise",
1981
+ "id": "multi_qubit_systems__bell_state_change_2 ",
1982
+ "title": "Bell State Change 2",
1983
+ "description": {
1984
+ "type": "text-content",
1985
+ "asHtml": "<p><strong>Input:</strong> Two entangled qubits in Bell state $|\\Phi^{+}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|00\\rangle + |11\\rangle\\big)$.</p>\n<p><strong>Goal:</strong> Change the two-qubit state to $|\\Psi^{+}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|01\\rangle + |10\\rangle\\big)$.</p>\n",
1986
+ "asMarkdown": "**Input:** Two entangled qubits in Bell state $|\\Phi^{+}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|00\\rangle + |11\\rangle\\big)$.\n\n**Goal:** Change the two-qubit state to $|\\Psi^{+}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|01\\rangle + |10\\rangle\\big)$."
1987
+ },
1988
+ "sourceIds": [
1989
+ "multi_qubit_systems__bell_state_change_2__Verification.qs",
1990
+ "KatasLibrary.qs"
1991
+ ],
1992
+ "placeholderCode": "namespace Kata {\n operation BellStateChange2 (qs : Qubit[]) : Unit is Adj + Ctl {\n // Implement your solution here...\n \n }\n}",
1993
+ "explainedSolution": {
1994
+ "type": "explained-solution",
1995
+ "items": [
1996
+ {
1997
+ "type": "text-content",
1998
+ "asHtml": "<p>We have seen in the Single-Qubit Gates kata that the Pauli X gate flips $|0\\rangle$ to $|1\\rangle$ and vice versa, and as we seem to need some flipping of states, perhaps this gate may be of use. (Bearing in mind, of course, that the X gate operates on a single qubit).</p>\n<p>Let&#39;s compare the starting state $\\frac{1}{\\sqrt{2}} \\big(|0_A0_B\\rangle + |1_A1_B\\rangle\\big)$ with the goal state $\\frac{1}{\\sqrt{2}} \\big(1_A0_B\\rangle + |0_A1_B\\rangle\\big)$ term by term and see how we need to transform it to reach the goal.</p>\n<p>Using our nomenclature from &quot;Bell state change 1&quot;, we can now see by comparing terms that $|0_{A}\\rangle$ has flipped to $|1_A\\rangle$ to get the first term, and $|1_{A}\\rangle$ has flipped to $|0_A\\rangle$ to get the second term. This allows us to say that the correct gate to use is Pauli X, applied to <code>qs[0]</code>.</p>\n",
1999
+ "asMarkdown": "\nWe have seen in the Single-Qubit Gates kata that the Pauli X gate flips $|0\\rangle$ to $|1\\rangle$ and vice versa, and as we seem to need some flipping of states, perhaps this gate may be of use. (Bearing in mind, of course, that the X gate operates on a single qubit).\n\nLet's compare the starting state $\\frac{1}{\\sqrt{2}} \\big(|0_A0_B\\rangle + |1_A1_B\\rangle\\big)$ with the goal state $\\frac{1}{\\sqrt{2}} \\big(1_A0_B\\rangle + |0_A1_B\\rangle\\big)$ term by term and see how we need to transform it to reach the goal.\n\nUsing our nomenclature from \"Bell state change 1\", we can now see by comparing terms that $|0_{A}\\rangle$ has flipped to $|1_A\\rangle$ to get the first term, and $|1_{A}\\rangle$ has flipped to $|0_A\\rangle$ to get the second term. This allows us to say that the correct gate to use is Pauli X, applied to `qs[0]`."
2000
+ },
2001
+ {
2002
+ "type": "solution",
2003
+ "id": "multi_qubit_systems__bell_state_change_2_solution",
2004
+ "code": "namespace Kata {\n operation BellStateChange2 (qs : Qubit[]) : Unit is Adj + Ctl {\n X(qs[0]);\n }\n}"
2005
+ }
2006
+ ]
2007
+ }
2008
+ },
2009
+ {
2010
+ "type": "exercise",
2011
+ "id": "multi_qubit_systems__bell_state_change_3 ",
2012
+ "title": "Bell State Change 3",
2013
+ "description": {
2014
+ "type": "text-content",
2015
+ "asHtml": "<p><strong>Input:</strong> Two entangled qubits in Bell state $|\\Phi^{+}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|00\\rangle + |11\\rangle\\big)$.</p>\n<p><strong>Goal:</strong> Change the two-qubit state, without adding a global phase, to $|\\Psi^{-}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|01\\rangle - |10\\rangle\\big)$.</p>\n",
2016
+ "asMarkdown": "**Input:** Two entangled qubits in Bell state $|\\Phi^{+}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|00\\rangle + |11\\rangle\\big)$.\n\n**Goal:** Change the two-qubit state, without adding a global phase, to $|\\Psi^{-}\\rangle = \\frac{1}{\\sqrt{2}} \\big(|01\\rangle - |10\\rangle\\big)$."
2017
+ },
2018
+ "sourceIds": [
2019
+ "multi_qubit_systems__bell_state_change_3__Verification.qs",
2020
+ "KatasLibrary.qs"
2021
+ ],
2022
+ "placeholderCode": "namespace Kata {\n operation BellStateChange3(qs : Qubit[]) : Unit is Adj + Ctl {\n // Implement your solution here...\n\n }\n}",
2023
+ "explainedSolution": {
2024
+ "type": "explained-solution",
2025
+ "items": [
2026
+ {
2027
+ "type": "text-content",
2028
+ "asHtml": "<p>We remember from the Single-Qubit Gates kata that the Pauli Z gate leaves the sign of the $|0\\rangle$ component of the single qubit superposition unchanged but flips the sign of the $|1\\rangle$ component of the superposition. We have also just seen in &quot;Bell State Change 2&quot; how to change our input state to the state $\\frac{1}{\\sqrt{2}} \\big(|01\\rangle + |10\\rangle\\big)$, which is almost our goal state (disregarding the phase change for the moment). So it would seem that a combination of these two gates will be what we need here. The remaining question is in what order to apply them, and to which qubit.</p>\n<p>First of all, which qubit? Looking back at the task &quot;Bell state change 2&quot;, it seems clear that we need to use qubit <code>qs[0]</code>, like we did there.</p>\n<p>Second, in what order should we apply the gates? Remember that the Pauli Z gate flips the phase of the $|1\\rangle$ component of the superposition and leaves the $|0\\rangle$ component alone.\nLet&#39;s experiment with applying X to <code>qs[0]</code> first. Looking at our &quot;halfway answer&quot; state $\\frac{1}{\\sqrt{2}} \\big(|01\\rangle + |10\\rangle\\big)$, we can see that if we apply the Z gate to <code>qs[0]</code>, it will leave the $|0_{A}\\rangle$ alone but flip the phase of $|1_{A}\\rangle$ to $-|1_{A}\\rangle$, thus flipping the phase of the $|11\\rangle$ component of our Bell state.</p>\n",
2029
+ "asMarkdown": "\nWe remember from the Single-Qubit Gates kata that the Pauli Z gate leaves the sign of the $|0\\rangle$ component of the single qubit superposition unchanged but flips the sign of the $|1\\rangle$ component of the superposition. We have also just seen in \"Bell State Change 2\" how to change our input state to the state $\\frac{1}{\\sqrt{2}} \\big(|01\\rangle + |10\\rangle\\big)$, which is almost our goal state (disregarding the phase change for the moment). So it would seem that a combination of these two gates will be what we need here. The remaining question is in what order to apply them, and to which qubit.\n\nFirst of all, which qubit? Looking back at the task \"Bell state change 2\", it seems clear that we need to use qubit `qs[0]`, like we did there.\n\nSecond, in what order should we apply the gates? Remember that the Pauli Z gate flips the phase of the $|1\\rangle$ component of the superposition and leaves the $|0\\rangle$ component alone.\nLet's experiment with applying X to `qs[0]` first. Looking at our \"halfway answer\" state $\\frac{1}{\\sqrt{2}} \\big(|01\\rangle + |10\\rangle\\big)$, we can see that if we apply the Z gate to `qs[0]`, it will leave the $|0_{A}\\rangle$ alone but flip the phase of $|1_{A}\\rangle$ to $-|1_{A}\\rangle$, thus flipping the phase of the $|11\\rangle$ component of our Bell state."
2030
+ },
2031
+ {
2032
+ "type": "solution",
2033
+ "id": "multi_qubit_systems__bell_state_change_3_solution",
2034
+ "code": "namespace Kata {\n operation BellStateChange3(qs : Qubit[]) : Unit is Adj + Ctl {\n X(qs[0]);\n Z(qs[0]);\n }\n}"
2035
+ }
2036
+ ]
2037
+ }
2038
+ },
1937
2039
  {
1938
2040
  "type": "lesson",
1939
2041
  "id": "multi_qubit_systems__conclusion",
@@ -2018,6 +2120,36 @@ export default {
2018
2120
  }
2019
2121
  ]
2020
2122
  },
2123
+ {
2124
+ "type": "exercise",
2125
+ "id": "multi_qubit_gates__entangle_qubits",
2126
+ "title": "Entangle Qubits",
2127
+ "description": {
2128
+ "type": "text-content",
2129
+ "asHtml": "<p><strong>Input:</strong> Two unentangled qubits (stored in an array of length 2).\nThe first qubit will be in state $|\\psi\\rangle = \\alpha |0\\rangle + \\beta |1\\rangle$, the second - in state $|0\\rangle$\n(this can be written as two-qubit state $\\big(\\alpha |0\\rangle + \\beta |1\\rangle \\big) \\otimes |0\\rangle = \\alpha |00\\rangle + \\beta |10\\rangle$).</p>\n<p><strong>Goal:</strong> Change the two-qubit state to $\\alpha |00\\rangle + \\beta |11\\rangle$.</p>\n",
2130
+ "asMarkdown": "**Input:** Two unentangled qubits (stored in an array of length 2).\nThe first qubit will be in state $|\\psi\\rangle = \\alpha |0\\rangle + \\beta |1\\rangle$, the second - in state $|0\\rangle$\n(this can be written as two-qubit state $\\big(\\alpha |0\\rangle + \\beta |1\\rangle \\big) \\otimes |0\\rangle = \\alpha |00\\rangle + \\beta |10\\rangle$).\n\n**Goal:** Change the two-qubit state to $\\alpha |00\\rangle + \\beta |11\\rangle$.\n"
2131
+ },
2132
+ "sourceIds": [
2133
+ "multi_qubit_gates__entangle_qubits__Verification.qs",
2134
+ "KatasLibrary.qs"
2135
+ ],
2136
+ "placeholderCode": "namespace Kata {\n operation EntangleQubits (qs : Qubit[]) : Unit is Adj + Ctl {\n // Implement your solution here...\n\n }\n}",
2137
+ "explainedSolution": {
2138
+ "type": "explained-solution",
2139
+ "items": [
2140
+ {
2141
+ "type": "text-content",
2142
+ "asHtml": "<p>Let&#39;s denote the first qubit in state $\\alpha |0\\rangle + \\beta |1\\rangle$ as A and the second qubit in state $|0\\rangle$ as B.</p>\n<p>Compare our input state $\\alpha |0_A0_B\\rangle + \\beta |1_A0_B\\rangle$ with the goal state $\\alpha |0_A0_B\\rangle + \\beta |1_A1_B\\rangle$. \nWe want to pass our input qubit through a gate or gates (to be decided) that do the following. If qubit A is in the $|0\\rangle$ state, then we want to leave qubit B alone (the first term of the superposition). \nHowever, if A is in the $|1\\rangle$ state, we want to flip qubit B from $|0\\rangle$ into $|1\\rangle$ state. In other words, the state of B is to be made contingent upon the state of A. \nThis is exactly the effect of the $CNOT$ gate. Depending upon the state of the <strong>control</strong> qubit (A in our case), the value of the controlled or <strong>target</strong> qubit (B in our case) is inverted or unchanged. Thus, we get the goal state $\\alpha |00\\rangle + \\beta |11\\rangle$.</p>\n",
2143
+ "asMarkdown": "\nLet's denote the first qubit in state $\\alpha |0\\rangle + \\beta |1\\rangle$ as A and the second qubit in state $|0\\rangle$ as B.\n\nCompare our input state $\\alpha |0_A0_B\\rangle + \\beta |1_A0_B\\rangle$ with the goal state $\\alpha |0_A0_B\\rangle + \\beta |1_A1_B\\rangle$. \nWe want to pass our input qubit through a gate or gates (to be decided) that do the following. If qubit A is in the $|0\\rangle$ state, then we want to leave qubit B alone (the first term of the superposition). \nHowever, if A is in the $|1\\rangle$ state, we want to flip qubit B from $|0\\rangle$ into $|1\\rangle$ state. In other words, the state of B is to be made contingent upon the state of A. \nThis is exactly the effect of the $CNOT$ gate. Depending upon the state of the **control** qubit (A in our case), the value of the controlled or **target** qubit (B in our case) is inverted or unchanged. Thus, we get the goal state $\\alpha |00\\rangle + \\beta |11\\rangle$."
2144
+ },
2145
+ {
2146
+ "type": "solution",
2147
+ "id": "multi_qubit_gates__entangle_qubits_solution",
2148
+ "code": "namespace Kata {\n operation EntangleQubits (qs : Qubit[]) : Unit is Adj + Ctl {\n CNOT(qs[0], qs[1]);\n }\n}"
2149
+ }
2150
+ ]
2151
+ }
2152
+ },
2021
2153
  {
2022
2154
  "type": "exercise",
2023
2155
  "id": "multi_qubit_gates__preparing_bell_state",
@@ -2048,6 +2180,58 @@ export default {
2048
2180
  ]
2049
2181
  }
2050
2182
  },
2183
+ {
2184
+ "type": "lesson",
2185
+ "id": "multi_qubit_gates__cz_gate",
2186
+ "title": "CZ Gate",
2187
+ "items": [
2188
+ {
2189
+ "type": "text-content",
2190
+ "asHtml": "<p>The $CZ$ (&quot;controlled-Z&quot;) gate is a two-qubit gate, with one qubit referred to as the <strong>control</strong> qubit, and the other as the <strong>target</strong> qubit. Interestingly, for the $CZ$ gate it doesn&#39;t matter which qubit is control and which is target - the effect of the gate is the same either way!</p>\n<p>The $CZ$ gate acts as a conditional gate: if the control qubit is in state $|1\\rangle$, it applies the $Z$ gate to the target qubit, otherwise it does nothing.</p>\n<table>\n <tr>\n <th>Gate</th>\n <th>Matrix</th>\n <th>Applying to $|\\psi\\rangle = \\alpha|00\\rangle + \\beta|01\\rangle + \\gamma|10\\rangle + \\delta|11\\rangle$</th>\n <th>Applying to basis states</th>\n </tr>\n <tr>\n <td>$CZ$</td>\n <td>\n $$\\begin{bmatrix}\n 1 & 0 & 0 & 0 \\\\\n 0 & 1 & 0 & 0 \\\\\n 0 & 0 & 1 & 0 \\\\\n 0 & 0 & 0 & -1\n \\end{bmatrix}$$\n </td>\n <td>$CZ|\\psi\\rangle = \\alpha|00\\rangle + \\beta|01\\rangle + \\gamma|10\\rangle - \\delta|11\\rangle$</td>\n <td>\n $$CZ|00\\rangle = |00\\rangle$$\n $$CZ|01\\rangle = |01\\rangle$$\n $$CZ|10\\rangle = |10\\rangle$$\n $$CZ|11\\rangle = -|11\\rangle$$\n </td>\n </tr>\n</table>\n\n<p>The $CZ$ gate is particularly useful for creating and manipulating entangled states where the phase of the quantum state is crucial. Consider the following separable state:</p>\n<p>$$\\big(\\alpha|0\\rangle + \\beta|1\\rangle\\big) \\otimes \\big(\\gamma|0\\rangle + \\delta|1\\rangle\\big) = \\alpha\\gamma|00\\rangle + \\alpha\\delta|01\\rangle + \\beta\\gamma|10\\rangle + \\beta\\delta|11\\rangle$$</p>\n<p>If we apply the $CZ$ gate to it, with the first qubit as the control and the second as the target (or vice versa), we get the following state, which can no longer be separated:</p>\n<p>$$\\alpha\\gamma|00\\rangle + \\alpha\\delta|01\\rangle + \\beta\\gamma|10\\rangle - \\beta\\delta|11\\rangle$$</p>\n<p>The $CZ$ gate is also self-adjoint: applying it a second time reverses its effect, similar to the $CNOT$ gate.</p>\n",
2191
+ "asMarkdown": "\nThe $CZ$ (\"controlled-Z\") gate is a two-qubit gate, with one qubit referred to as the **control** qubit, and the other as the **target** qubit. Interestingly, for the $CZ$ gate it doesn't matter which qubit is control and which is target - the effect of the gate is the same either way!\n\nThe $CZ$ gate acts as a conditional gate: if the control qubit is in state $|1\\rangle$, it applies the $Z$ gate to the target qubit, otherwise it does nothing.\n\n<table>\n <tr>\n <th>Gate</th>\n <th>Matrix</th>\n <th>Applying to $|\\psi\\rangle = \\alpha|00\\rangle + \\beta|01\\rangle + \\gamma|10\\rangle + \\delta|11\\rangle$</th>\n <th>Applying to basis states</th>\n </tr>\n <tr>\n <td>$CZ$</td>\n <td>\n $$\\begin{bmatrix}\n 1 & 0 & 0 & 0 \\\\\n 0 & 1 & 0 & 0 \\\\\n 0 & 0 & 1 & 0 \\\\\n 0 & 0 & 0 & -1\n \\end{bmatrix}$$\n </td>\n <td>$CZ|\\psi\\rangle = \\alpha|00\\rangle + \\beta|01\\rangle + \\gamma|10\\rangle - \\delta|11\\rangle$</td>\n <td>\n $$CZ|00\\rangle = |00\\rangle$$\n $$CZ|01\\rangle = |01\\rangle$$\n $$CZ|10\\rangle = |10\\rangle$$\n $$CZ|11\\rangle = -|11\\rangle$$\n </td>\n </tr>\n</table>\n\nThe $CZ$ gate is particularly useful for creating and manipulating entangled states where the phase of the quantum state is crucial. Consider the following separable state:\n\n$$\\big(\\alpha|0\\rangle + \\beta|1\\rangle\\big) \\otimes \\big(\\gamma|0\\rangle + \\delta|1\\rangle\\big) = \\alpha\\gamma|00\\rangle + \\alpha\\delta|01\\rangle + \\beta\\gamma|10\\rangle + \\beta\\delta|11\\rangle$$\n\nIf we apply the $CZ$ gate to it, with the first qubit as the control and the second as the target (or vice versa), we get the following state, which can no longer be separated:\n\n$$\\alpha\\gamma|00\\rangle + \\alpha\\delta|01\\rangle + \\beta\\gamma|10\\rangle - \\beta\\delta|11\\rangle$$\n\nThe $CZ$ gate is also self-adjoint: applying it a second time reverses its effect, similar to the $CNOT$ gate."
2192
+ }
2193
+ ]
2194
+ },
2195
+ {
2196
+ "type": "exercise",
2197
+ "id": "multi_qubit_gates__relative_phase_minusone",
2198
+ "title": "Relative Phase -1",
2199
+ "description": {
2200
+ "type": "text-content",
2201
+ "asHtml": "<p><strong>Input:</strong> Two unentangled qubits (stored in an array of length 2) in state $|+\\rangle \\otimes |+\\rangle = \\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle {\\color{blue}+} |11\\rangle \\big)$.</p>\n<p><strong>Goal:</strong> Change the two-qubit state to $\\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle {\\color{red}-} |11\\rangle \\big)$.</p>\n",
2202
+ "asMarkdown": "**Input:** Two unentangled qubits (stored in an array of length 2) in state $|+\\rangle \\otimes |+\\rangle = \\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle {\\color{blue}+} |11\\rangle \\big)$.\n\n**Goal:** Change the two-qubit state to $\\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle {\\color{red}-} |11\\rangle \\big)$.\n"
2203
+ },
2204
+ "sourceIds": [
2205
+ "multi_qubit_gates__relative_phase_minusone__Verification.qs",
2206
+ "KatasLibrary.qs"
2207
+ ],
2208
+ "placeholderCode": "namespace Kata {\n operation RelativePhaseMinusOne (qs : Qubit[]) : Unit is Adj + Ctl {\n // Implement your solution here...\n\n }\n}",
2209
+ "explainedSolution": {
2210
+ "type": "explained-solution",
2211
+ "items": [
2212
+ {
2213
+ "type": "text-content",
2214
+ "asHtml": "<p>Firstly we notice that we are dealing with an unentangled pair of qubits.\nIn vector form the transformation we need is \n$$\n\\frac{1}{2}\\begin{bmatrix}1\\\\ 1\\\\ 1\\\\ 1\\\\ \\end{bmatrix} \n\\rightarrow \n\\frac{1}{2}\\begin{bmatrix}1\\\\ 1\\\\ 1\\\\ -1\\\\ \\end{bmatrix}\n$$</p>\n<p>All that needs to happen to change the input into the goal is that the $|11\\rangle$ basis state needs to have its sign flipped.</p>\n<p>We remember that the Pauli $Z$ gate flips signs in the single qubit case, and that $CZ$ is the 2-qubit version of this gate. And indeed, the effect of the $CZ$ gate is exactly the transformation we&#39;re looking for here.</p>\n",
2215
+ "asMarkdown": "\nFirstly we notice that we are dealing with an unentangled pair of qubits.\nIn vector form the transformation we need is \n$$\n\\frac{1}{2}\\begin{bmatrix}1\\\\\\ 1\\\\\\ 1\\\\\\ 1\\\\\\ \\end{bmatrix} \n\\rightarrow \n\\frac{1}{2}\\begin{bmatrix}1\\\\\\ 1\\\\\\ 1\\\\\\ -1\\\\\\ \\end{bmatrix}\n$$\n\nAll that needs to happen to change the input into the goal is that the $|11\\rangle$ basis state needs to have its sign flipped.\n\nWe remember that the Pauli $Z$ gate flips signs in the single qubit case, and that $CZ$ is the 2-qubit version of this gate. And indeed, the effect of the $CZ$ gate is exactly the transformation we're looking for here."
2216
+ },
2217
+ {
2218
+ "type": "solution",
2219
+ "id": "multi_qubit_gates__two_qubit_gate_2_solution_a",
2220
+ "code": "namespace Kata {\n operation RelativePhaseMinusOne (qs : Qubit[]) : Unit is Adj + Ctl {\n CZ(qs[0], qs[1]);\n }\n}"
2221
+ },
2222
+ {
2223
+ "type": "text-content",
2224
+ "asHtml": "<p>Alternatively, we can express this gate using the intrinsic gate Z and its controlled variant using the Controlled functor:</p>\n",
2225
+ "asMarkdown": "\nAlternatively, we can express this gate using the intrinsic gate Z and its controlled variant using the Controlled functor:"
2226
+ },
2227
+ {
2228
+ "type": "solution",
2229
+ "id": "multi_qubit_gates__two_qubit_gate_2_solution_b",
2230
+ "code": "namespace Kata {\n operation RelativePhaseMinusOne (qs : Qubit[]) : Unit is Adj + Ctl {\n Controlled Z([qs[0]], qs[1]);\n }\n}"
2231
+ }
2232
+ ]
2233
+ }
2234
+ },
2051
2235
  {
2052
2236
  "type": "lesson",
2053
2237
  "id": "multi_qubit_gates__ket_bra_representation",
@@ -4083,14 +4267,34 @@ export default {
4083
4267
  "id": "multi_qubit_systems__prepare_with_complex__Verification.qs",
4084
4268
  "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Katas;\n\n operation PrepareWithComplex_Reference(qs : Qubit[]) : Unit is Adj + Ctl {\n H(qs[0]);\n H(qs[1]);\n S(qs[0]);\n T(qs[1]);\n }\n\n @EntryPoint()\n operation CheckSolution() : Bool {\n CheckOperationsEquivalenceOnZeroStateWithFeedback(Kata.PrepareWithComplex, \n PrepareWithComplex_Reference, 2)\n }\n}\n"
4085
4269
  },
4270
+ {
4271
+ "id": "multi_qubit_systems__bell_state_change_1__Verification.qs",
4272
+ "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Canon;\n open Microsoft.Quantum.Intrinsic;\n open Microsoft.Quantum.Diagnostics;\n open Microsoft.Quantum.Katas;\n\n operation PrepareBellState(qs : Qubit[]) : Unit is Adj + Ctl {\n H(qs[0]);\n CNOT(qs[0], qs[1]);\n }\n\n\n operation BellStateChange1_Reference(qs : Qubit[]) : Unit is Adj + Ctl {\n Z(qs[0]);\n }\n\n\n operation CheckOperationsEquivalenceOnInitialStateStrict(\n initialState : Qubit[] => Unit is Adj,\n op : (Qubit[] => Unit is Adj + Ctl),\n reference : (Qubit[] => Unit is Adj + Ctl),\n inputSize : Int\n ) : Bool {\n use (control, target) = (Qubit(), Qubit[inputSize]);\n within {\n H(control);\n initialState(target);\n }\n apply {\n Controlled op([control], target);\n Adjoint Controlled reference([control], target);\n }\n\n\n let isCorrect = CheckAllZero([control] + target);\n ResetAll([control] + target);\n isCorrect\n }\n\n\n @EntryPoint()\n operation CheckSolution() : Bool {\n let isCorrect = CheckOperationsEquivalenceOnInitialStateStrict(\n PrepareBellState,\n Kata.BellStateChange1, \n BellStateChange1_Reference, \n 2);\n\n\n if isCorrect {\n Message(\"Correct!\");\n } else {\n Message(\"Incorrect\");\n ShowQuantumStateComparison(2, PrepareBellState, Kata.BellStateChange1, BellStateChange1_Reference);\n }\n\n\n return isCorrect;\n }\n\n \n}\n"
4273
+ },
4274
+ {
4275
+ "id": "multi_qubit_systems__bell_state_change_2__Verification.qs",
4276
+ "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Canon;\n open Microsoft.Quantum.Intrinsic;\n open Microsoft.Quantum.Diagnostics;\n open Microsoft.Quantum.Katas;\n\n operation PrepareBellState(qs : Qubit[]) : Unit is Adj + Ctl {\n H(qs[0]);\n CNOT(qs[0], qs[1]);\n }\n\n\n operation BellStateChange2_Reference(qs : Qubit[]) : Unit is Adj + Ctl {\n X(qs[0]);\n }\n\n\n operation CheckOperationsEquivalenceOnInitialStateStrict(\n initialState : Qubit[] => Unit is Adj,\n op : (Qubit[] => Unit is Adj + Ctl),\n reference : (Qubit[] => Unit is Adj + Ctl),\n inputSize : Int\n ) : Bool {\n use (control, target) = (Qubit(), Qubit[inputSize]);\n within {\n H(control);\n initialState(target);\n }\n apply {\n Controlled op([control], target);\n Adjoint Controlled reference([control], target);\n }\n\n\n let isCorrect = CheckAllZero([control] + target);\n ResetAll([control] + target);\n isCorrect\n }\n\n\n @EntryPoint()\n operation CheckSolution() : Bool {\n let isCorrect = CheckOperationsEquivalenceOnInitialStateStrict(\n PrepareBellState,\n Kata.BellStateChange2, \n BellStateChange2_Reference, \n 2);\n\n\n if isCorrect {\n Message(\"Correct!\");\n } else {\n Message(\"Incorrect\");\n ShowQuantumStateComparison(2, PrepareBellState, Kata.BellStateChange2, BellStateChange2_Reference);\n }\n\n\n return isCorrect;\n }\n\n \n}\n"
4277
+ },
4278
+ {
4279
+ "id": "multi_qubit_systems__bell_state_change_3__Verification.qs",
4280
+ "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Canon;\n open Microsoft.Quantum.Intrinsic;\n open Microsoft.Quantum.Diagnostics;\n open Microsoft.Quantum.Katas;\n\n operation PrepareBellState(qs : Qubit[]) : Unit is Adj + Ctl {\n H(qs[0]);\n CNOT(qs[0], qs[1]);\n }\n\n\n operation BellStateChange3_Reference(qs : Qubit[]) : Unit is Adj + Ctl {\n X(qs[0]);\n Z(qs[0]);\n }\n\n\n operation CheckOperationsEquivalenceOnInitialStateStrict(\n initialState : Qubit[] => Unit is Adj,\n op : (Qubit[] => Unit is Adj + Ctl),\n reference : (Qubit[] => Unit is Adj + Ctl),\n inputSize : Int\n ) : Bool {\n use (control, target) = (Qubit(), Qubit[inputSize]);\n within {\n H(control);\n initialState(target);\n }\n apply {\n Controlled op([control], target);\n Adjoint Controlled reference([control], target);\n }\n\n\n let isCorrect = CheckAllZero([control] + target);\n ResetAll([control] + target);\n isCorrect\n }\n\n\n @EntryPoint()\n operation CheckSolution() : Bool {\n let isCorrect = CheckOperationsEquivalenceOnInitialStateStrict(\n PrepareBellState,\n Kata.BellStateChange3, \n BellStateChange3_Reference, \n 2);\n\n\n if isCorrect {\n Message(\"Correct!\");\n } else {\n Message(\"Incorrect\");\n ShowQuantumStateComparison(2, PrepareBellState, Kata.BellStateChange3, BellStateChange3_Reference);\n }\n\n\n return isCorrect;\n }\n\n \n}\n"
4281
+ },
4086
4282
  {
4087
4283
  "id": "multi_qubit_gates__compound_gate__Verification.qs",
4088
4284
  "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Katas;\n open Microsoft.Quantum.Math;\n\n operation CompoundGate (qs : Qubit[]) : Unit is Adj + Ctl {\n S(qs[0]);\n I(qs[1]); // this line can be omitted, since it doesn't change the qubit state\n Y(qs[2]);\n }\n\n operation CheckSolution() : Bool {\n let solution = Kata.CompoundGate;\n let reference = CompoundGate;\n let isCorrect = CheckOperationsEquivalenceStrict(solution, reference, 3);\n\n // Output different feedback to the user depending on whether the solution was correct.\n if isCorrect {\n Message(\"Correct!\");\n } else {\n Message(\"Incorrect.\");\n Message(\"Hint: examine how your solution transforms the given state and compare it with the expected \" +\n \"transformation\");\n ShowQuantumStateComparison(3, PrepRandomState, solution, reference);\n }\n\n isCorrect\n }\n}"
4089
4285
  },
4286
+ {
4287
+ "id": "multi_qubit_gates__entangle_qubits__Verification.qs",
4288
+ "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Katas;\n open Microsoft.Quantum.Diagnostics;\n open Microsoft.Quantum.Math;\n open Microsoft.Quantum.Convert;\n\n operation EntangleQubits (qs : Qubit[]) : Unit is Adj + Ctl {\n CNOT(qs[0], qs[1]);\n }\n\n operation CheckOperationsEquivalenceOnInitialStateStrict(\n initialState : Qubit[] => Unit is Adj,\n op : (Qubit[] => Unit is Adj + Ctl),\n reference : (Qubit[] => Unit is Adj + Ctl),\n inputSize : Int\n ) : Bool {\n use (control, target) = (Qubit(), Qubit[inputSize]);\n within {\n H(control);\n initialState(target);\n }\n apply {\n Controlled op([control], target);\n Adjoint Controlled reference([control], target);\n }\n let isCorrect = CheckAllZero([control] + target);\n ResetAll([control] + target);\n isCorrect\n }\n \n operation CheckSolution() : Bool {\n let range = 10;\n for i in 0 .. range - 1 {\n let angle = 2.0 * PI() * IntAsDouble(i) / IntAsDouble(range);\n let initialState = qs => Ry(2.0 * angle, qs[0]);\n let isCorrect = CheckOperationsEquivalenceOnInitialStateStrict(\n initialState,\n Kata.EntangleQubits, \n EntangleQubits, \n 2);\n if not isCorrect {\n Message(\"Incorrect\");\n Message($\"Test fails for alpha = {Cos(angle)}, beta = {Sin(angle)}.\");\n ShowQuantumStateComparison(2, initialState, Kata.EntangleQubits, EntangleQubits);\n return false;\n }\n }\n\n Message(\"Correct!\");\n true\n }\n}"
4289
+ },
4090
4290
  {
4091
4291
  "id": "multi_qubit_gates__preparing_bell_state__Verification.qs",
4092
4292
  "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Katas;\n\n operation BellState (qs : Qubit[]) : Unit is Adj + Ctl {\n H(qs[0]);\n CNOT(qs[0], qs[1]);\n }\n\n operation CheckSolution() : Bool {\n let solution = Kata.BellState;\n let reference = BellState;\n let isCorrect = CheckOperationsEquivalenceOnZeroState(solution, reference, 2);\n\n // Output different feedback to the user depending on whether the solution was correct.\n if isCorrect {\n Message(\"Correct!\");\n } else {\n Message(\"Incorrect.\");\n Message(\"Hint: examine the state prepared by your solution and compare it with the state it \" +\n \"is expected to prepare.\");\n ShowQuantumStateComparison(2, (qs => ()), solution, reference);\n }\n\n isCorrect\n }\n}"
4093
4293
  },
4294
+ {
4295
+ "id": "multi_qubit_gates__relative_phase_minusone__Verification.qs",
4296
+ "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Katas;\n open Microsoft.Quantum.Diagnostics;\n\n operation PrepareState(qs : Qubit[]) : Unit is Adj + Ctl {\n ApplyToEachCA(H, qs);\n }\n operation RelativePhaseMinusOne (qs : Qubit[]) : Unit is Adj + Ctl {\n CZ(qs[0], qs[1]);\n }\n\n operation CheckOperationsEquivalenceOnInitialStateStrict(\n initialState : Qubit[] => Unit is Adj,\n op : (Qubit[] => Unit is Adj + Ctl),\n reference : (Qubit[] => Unit is Adj + Ctl),\n inputSize : Int\n ) : Bool {\n use (control, target) = (Qubit(), Qubit[inputSize]);\n within {\n H(control);\n initialState(target);\n }\n apply {\n Controlled op([control], target);\n Adjoint Controlled reference([control], target);\n }\n let isCorrect = CheckAllZero([control] + target);\n ResetAll([control] + target);\n isCorrect\n }\n\n operation CheckSolution() : Bool {\n let isCorrect = CheckOperationsEquivalenceOnInitialStateStrict(\n PrepareState,\n Kata.RelativePhaseMinusOne, \n RelativePhaseMinusOne, \n 2);\n if isCorrect {\n Message(\"Correct!\");\n } else {\n Message(\"Incorrect\");\n ShowQuantumStateComparison(2, PrepareState, Kata.RelativePhaseMinusOne, RelativePhaseMinusOne);\n }\n\n return isCorrect;\n }\n}"
4297
+ },
4094
4298
  {
4095
4299
  "id": "multi_qubit_gates__qubit_swap__Verification.qs",
4096
4300
  "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Diagnostics;\n open Microsoft.Quantum.Intrinsic;\n open Microsoft.Quantum.Katas;\n\n operation QubitSwap (qs : Qubit[], index1 : Int, index2 : Int) : Unit is Adj + Ctl {\n SWAP(qs[index1], qs[index2]);\n }\n\n operation CheckSolution() : Bool {\n for N in 2 .. 5 {\n for index1 in 0 .. N-2 {\n for index2 in index1+1 .. N-1 {\n let solution = register => Kata.QubitSwap(register, index1, index2);\n let reference = register => QubitSwap(register, index1, index2);\n if not CheckOperationsEquivalence(solution, reference, N) {\n Message(\"Incorrect.\");\n Message($\"Swapping qubits {index1} and {index2} out of $N$ didn't have the expected effect.\");\n return false;\n }\n }\n }\n }\n\n Message(\"Correct!\");\n true\n }\n}"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.All
3
3
  title: All function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Any
3
3
  title: Any function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Chunks
3
3
  title: Chunks function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.CircularlyShifted
3
3
  title: CircularlyShifted function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.ColumnAt
3
3
  title: ColumnAt function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Count
3
3
  title: Count function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -37,6 +37,6 @@ The number of elements in `array` that satisfy the predicate.
37
37
 
38
38
  ## Example
39
39
  ```qsharp
40
- let evensCount = Count(x -> x % 2 == 0, [1, 3, 6, 7, 9]);
40
+ let evensCount = Count(x -> x % 2 == 0, [1, 3, 6, 7, 9]);
41
41
  // evensCount is 1.
42
42
  ```
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Diagonal
3
3
  title: Diagonal function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.DrawMany
3
3
  title: DrawMany operation
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: operation
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Enumerated
3
3
  title: Enumerated function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Excluding
3
3
  title: Excluding function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Filtered
3
3
  title: Filtered function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.FlatMapped
3
3
  title: FlatMapped function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Flattened
3
3
  title: Flattened function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Fold
3
3
  title: Fold function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.ForEach
3
3
  title: ForEach operation
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: operation
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Head
3
3
  title: Head function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.HeadAndRest
3
3
  title: HeadAndRest function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.IndexOf
3
3
  title: IndexOf function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.IndexRange
3
3
  title: IndexRange function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Interleaved
3
3
  title: Interleaved function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.IsEmpty
3
3
  title: IsEmpty function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.IsRectangularArray
3
3
  title: IsRectangularArray function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.IsSorted
3
3
  title: IsSorted function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.IsSquareArray
3
3
  title: IsSquareArray function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.Mapped
3
3
  title: Mapped function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  uid: Qdk.Microsoft.Quantum.Arrays.MappedByIndex
3
3
  title: MappedByIndex function
4
- ms.date: 04/17/2024 12:00:00 AM
4
+ ms.date: 04/23/2024 12:00:00 AM
5
5
  ms.topic: managed-reference
6
6
  qsharp.kind: function
7
7
  qsharp.namespace: Microsoft.Quantum.Arrays