Microsoftは、Code KatasのアイデアをベースにしたQuantum Katasという新たなプロジェクトをオープンソース公開した。Q#言語を使った量子コンピューティングへと、より多くの開発者が歩を進めるように支援することが目的だ。Quantum Katasは、学習者にフィードバックを即時に提供しながら、段階的に複雑になるプログラミング課題のセットだ。

現時点で4つの型(Kata)が提供されており、それぞれが量子コンピューティングの特定のトピックをカバーする。

Kataは、複雑化するコーディングタスクのセットとして編成されている。各タスクは、テスト駆動プログラミングの方法論に従って、当初は失敗するユニットテストに関連付けられている。開発者は、Kataで提供されている資料や解答例を参照しながら、テストをパスするようにコードを埋める。

Code Katasに含まれる問題は、Microsoftは昨年7月に実施したQ#コーディングコンテストからのものだ。

次に示すのは、キュービットの状態を反転するという簡単なタスクの例と、それよりも少し複雑な、現在の状態に基づいてキュービットの状態を変更するものだ。

////////////////////////////////////////////////////////////////// // Part I. Single-Qubit Gates ////////////////////////////////////////////////////////////////// // Task 1.1. State flip: |0> to |1> and vice versa // Input: A qubit in state |ψ> = α |0> + β |1>. // Goal: Change the state of the qubit to α |1> + β |0>. // Example: // If the qubit is in state |0>, change its state to |1>. // If the qubit is in state |1>, change its state to |0>. // Note that this operation is self-adjoint: applying it for a second time // returns the qubit to the original state. operation StateFlip (q : Qubit) : () { body { // The Pauli X gate will change the |0> state to the |1> state and vice versa. // Type X(q); // Then rebuild the project and rerun the tests - T11_StateFlip_Test should now pass! // ... } adjoint self; } // Task 1.6*. Phase change // Inputs: // 1) A qubit in state β|0> + γ|1>. // 2) Angle alpha, in radians, represented as Double // Goal: Change the state of the qubit as follows: // If the qubit is in state |0>, don't change its state. // If the qubit is in state |1>, change its state to exp(i*alpha)|1>. // If the qubit is in superposition, change its state according to the effect on basis vectors. operation PhaseChange (q : Qubit, alpha : Double) : () { body { // ... } adjoint auto; }

Microsoft Quantum Katasを使用するには、Windows 10、macOS、Linux上で利用可能なQuantum Development Kitをインストールする必要がある。それぞれのKataは、Visual Stdioのソリューションと共に別々のディレクトリに配置されている。macOSとLinuxでは、.NET Core SDK 2.0以降をインストールした上で、Visual Studio Codeまたはコマンドラインを使ってKatasを実行することができる。