Contenu connexe
Similaire à (過去バージョン) Q#基礎 ver1.0 (20)
Plus de Takayoshi Tanaka (20)
(過去バージョン) Q#基礎 ver1.0
- 6. Q#開発の準備
Visual StudioかVisual Studio CodeがエディタとしてQ#をサポート
エディタ支援が不要であれば、.NET Core CLI+好きなエディタでもOK
必要なもの
◦ .NET Core が動くOS
◦ 初期のQ#では新し目のCPUが必須だったが、今はOK
◦ Q#開発キット
◦ 開発キット自体は.NET Coreのクラスライブラリ形式でプロジェクトに追加されるので、
実際には.NET Coreプロジェクトのテンプレートをインストールする
◦ Visual Studio or Visual Studio Code (option)
◦ それぞれエディタの拡張機能が提供されれている
https://docs.microsoft.com/en-us/quantum/quantum-
installconfig?view=qsharp-preview&tabs=tabid-vs2017
- 10. Q#プロジェクト Internal
作成されたプロジェクトは普通のC#プロジェクトにQ#SDKが参照されているもの
◦ .NET Core 2.0 (netcoreapp2.0)
Q#のソースはC#(g.cs)にいったんコンパイルされる
◦ WPFとかSilverlightのXAMLやASP.NETのcshtmlと同じイメージ
◦ ただし、プロジェクトのビルド時にしかビルドされない (コード編集中に自動ビルドされない)
◦ NuGetで配られる microsoft.quantum.development.kit の中にビルド定義があり、
プロジェクトのビルド時にトリガーされる == .NET Core標準の仕組みを利用
Q#コードの支援機能はない
◦ C#(Roslyn)のような Intellisence はおろか、コードフォーマットもない。つらい。
というのを頭に入れておくと、Q#コード書くときに(C#との感覚の違いがわかって)便利かも
- 14. 3種類の制御構文
◦ if…elif…else 文
◦ elseじゃなくてelif
◦ forループ
◦ C#のforeachに相当
◦ ループの変数を事前に定義する必要なし
◦ repeat-untilループ
◦ 今回は省略
◦ Do-while文で、条件判定に複数の文が
記述できるイメージ
◦ 「当たるまで引けば当たる」
- 21. 型モデル
Primitive
◦ Int 2, -107, 49 (64bit)
◦ Double 0.0, -43.2, 5e-7
◦ Bool true, false
◦ Pauli PauliI, PauliX, PauliY, PauliZ
◦ Result Zero, One (測定結果を表現)
◦ Range 1..10, 5..-2..1 (start..step..end なので 5,3,1)
◦ String “qsharp” (ログメッセージに利用)
◦ Qubit
Tuple (Int, (Qubit, Qubit))
配列 [1; 4], new Int[13]
Operation & Function型
ユーザー定義型 newtype Complex = (Double, Double);
C#でいう暗黙的な型変換はない。
Microsoft.Quantum.Extensions.Convert 以下
のFunctionを使って明示的に変換しないといけない
- 40. 参考リンク
Microsoft Quantum
◦ 公式ページ: https://cloudblogs.microsoft.com/quantum/
◦ Quantum Development Kit: https://www.microsoft.com/en-us/quantum/development-
kit
◦ 開発用ドキュメント: https://docs.microsoft.com/en-us/quantum/?view=qsharp-preview
Q# Coding Contest
◦ 告知ブログ http://codeforces.com/blog/entry/60209
◦ Warmup round http://codeforces.com/contest/1001
◦ 解説 https://assets.codeforces.com/rounds/997-998/warmup-editorial.pdf
◦ 本戦 http://codeforces.com/contest/1002
◦ 解説 https://assets.codeforces.com/rounds/997-998/main-contest-editorial.pdf
◦ Introduction to Quantum Oracle http://codeforces.com/blog/entry/60319
- 41. 参考リンク
Q#の設計を学術的に知りたい人向け
◦ Q#: Enabling scalable quantum computing and development with a high-level domain-
specific language
https://www.microsoft.com/en-us/research/publication/q-enabling-scalable-quantum-
computing-and-development-with-a-high-level-domain-specific-language/
◦ Programming Quantum Computers Using Design Automation
https://www.microsoft.com/en-us/research/publication/programming-quantum-
computers-using-design-automation/
MRFの学術的背景を知りたい人向け
◦ https://www.nature.com/articles/nature11971
◦ http://case.edu/mrf/
◦ Magnetic resonance fingerprintingとその最新動向 :
http://www.innervision.co.jp/sp/ad/suite/siemens/technical_notes/1511techinfo
◦ 最新の高速撮像技術─fingerprinting─:
http://www.innervision.co.jp/ad/suite/siemens/technical_notes/160976