async public Task ProblemC_1() { string dumpPath = Modules.GetTempFilepath(); using var sim = new QuantumSimulator(); await QSharpCodingContestSummer2018Warmup.ProblemC.Driver.Run(sim, 1, dumpPath); DumpMachineParser parser = new DumpMachineParser(dumpPath); parser.GetQubit(0b0).Assert(1.0 / Math.Sqrt(2), 0); parser.GetQubit(0b1).Assert(1.0 / Math.Sqrt(2), 0); }
async public Task ProblemG_0() { int n = 4, k = 0; string dumpPath = Modules.GetTempFilepath(); using var sim = new QuantumSimulator(); await QSharpCodingContestSummer2018Warmup.ProblemG.Driver.Run(sim, n, k, dumpPath); DumpMachineParser parser = new DumpMachineParser(dumpPath); parser.GetProb(k, false).Should().BeApproximately(1, Modules.EPS); parser.GetProb(n, false).Should().BeApproximately(1, Modules.EPS); }
async public Task ProblemB_3() { string dumpPath = Modules.GetTempFilepath(); using var sim = new QuantumSimulator(); // | ψ-> = 01と10の重ね合わせ状態(| 01 > - | 10 >) / sqrt(2) await QSharpCodingContestSummer2018Warmup.ProblemB.Driver.Run(sim, 3, dumpPath); DumpMachineParser parser = new DumpMachineParser(dumpPath); parser.GetQubit(0b00).Assert(0, 0); parser.GetQubit(0b01).Assert(1.0 / Math.Sqrt(2), 0); parser.GetQubit(0b10).Assert(-1.0 / Math.Sqrt(2), 0); parser.GetQubit(0b11).Assert(0, 0); }
async public Task ProblemC_4() { string dumpPath = Modules.GetTempFilepath(); using var sim = new QuantumSimulator(); await QSharpCodingContestSummer2018Warmup.ProblemC.Driver.Run(sim, 4, dumpPath); DumpMachineParser parser = new DumpMachineParser(dumpPath); parser.GetQubit(0).Assert(1.0 / Math.Sqrt(2), 0); for (int msk = 1; msk < 15; msk++) { parser.GetQubit(msk).Assert(0, 0); } parser.GetQubit(15).Assert(1.0 / Math.Sqrt(2), 0); }