gpt4 book ai didi

.net-core - Q# 程序不包含适合入口点的静态 'Main' 方法

转载 作者:行者123 更新时间:2023-12-03 21:53:15 24 4
gpt4 key购买 nike

我正在Q#中创建一个程序.

Problem



给定两个处于状态 |00⟩ 的量子比特。你的任务是为它们创建以下状态:
1/3–√(|00⟩+|01⟩+|10⟩)
您必须实现一个将 2 个量子位作为输入且没有输出的操作。您的解决方案的“输出”是它离开输入量子位的状态。

Code



namespace Solution {
open Microsoft.Quantum.Primitive;
open Microsoft.Quantum.Canon;
open Microsoft.Quantum.Math;
open Microsoft.Quantum.Convert;

operation Solve (qs : Qubit[]) : Unit
{
body
{
Ry(ArcCos(Sqrt(2.0/3.0))*2.0,qs[0]);
(ControlledOnInt(0,H))([qs[0]],qs[1]);
}
}
}

但是当我运行它时会显示以下错误。

Error


CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point 

[C:\Users\Pawar\Desktop\HK\codeforces\Q#\Solution\Solution.csproj]

所以我试着把 EntryPoint()在方法声明之前。这向我显示了不同的错误

error QS6231: Invalid entry point. Values of type Qubit may not be used as arguments or return values to entry points. [C:\Users\Pawar\Desktop\HK\codeforces\Q#\Solution\Solution.csproj]



请帮我如何正确运行它?
谢谢✌️

最佳答案

为了将 Q# 程序作为可执行文件运行,您需要有一个 @EntryPoint()操作定义。您可以在这篇优秀的博文中阅读更多内容:https://qsharp.community/blog/qsharp-entrypoint/ .

具体来说,在您的情况下,错误消息表明 Qubit[]不是程序主入口点的有效参数。这是有道理的,因为从命令行执行程序时传递量子位数组是没有意义的。而且,您的操作不会打印任何内容或返回任何结果,因此您将无法看到它在做什么。

您可能应该创建一个 @EntryPoint()使用适当的参数调用现有操作的包装操作,可能会打印一些诊断信息,然后返回一些结果。在您的情况下,您也许可以执行以下操作(请注意您需要打开的其他命名空间):

    open Microsoft.Quantum.Diagnostics;
open Microsoft.Quantum.Measurement;

@EntryPoint()
operation SolveForTwoQubits() : Result[]
{
using (qubits = Qubit[2])
{
Solve(qubits); // invoke your existing Solve operation
DumpMachine(); // outputs the state of your qubits
let results = MultiM(qubits); // measure the qubits
ResetAll(qubits); // reset the qubits to the initial state
return results; // return the measured results
}
}

这将给出一些如下所示的输出:
# wave function for qubits with ids (least to most significant): 0;1
∣0❭: 0.577350 + 0.000000 i == ******* [ 0.333333 ] --- [ 0.00000 rad ]
∣1❭: 0.577350 + 0.000000 i == ******* [ 0.333333 ] --- [ 0.00000 rad ]
∣2❭: 0.577350 + 0.000000 i == ******* [ 0.333333 ] --- [ 0.00000 rad ]
∣3❭: 0.000000 + 0.000000 i == [ 0.000000 ]
[Zero,One]

关于.net-core - Q# 程序不包含适合入口点的静态 'Main' 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62343587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com