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);
        }