static void Main(string[] args) { using (var qsim = new QuantumSimulator()) { var rand = new System.Random(); System.Console.WriteLine($"For our first trick, we'll use quantum teleportation to send classical bits."); System.Console.WriteLine($"That is, we'll send and receive qubits in states |0> and |1> only.\n\n"); foreach (var i in Enumerable.Range(0, 10)) { var sent = rand.Next(2) == 0; // rand.Next(2) returns a nonnegative random integer less than 2 var received = TeleportClassicalMessage.Run(qsim, sent).Result; System.Console.WriteLine($"Round {i}:\t Sent {sent}, \t Received {received}."); System.Console.WriteLine(sent == received ? "Teleportation Successful!" : "\n"); } System.Console.WriteLine($"\n\nFor our second trick, we'll quantum teleport states " + $"1/sqrt(2) * (|0> +/- |1>) ."); System.Console.WriteLine($"We'll use H+ and H- as names for these two states.\n\n"); foreach (var i in Enumerable.Range(0, 10)) { var sent = rand.Next(2) == 0; // rand.Next(2) returns a nonnegative random integer less than 2 var received = TeleportNonclassicalQubit.Run(qsim, sent).Result; System.Console.WriteLine($"Round {i}:\t Sent " + (sent? "H+" : "H-") + ", \t Received " + (received? "H+" : "H-") + "."); System.Console.WriteLine(sent == received ? "Teleportation Successful!" : "\n"); } } }
static void Main(string[] args) { using (var sim = new QuantumSimulator()) { var rand = new System.Random(); foreach (var idxRun in Enumerable.Range(0, 8)) { var sent = rand.Next(2) == 0; var received = TeleportClassicalMessage.Run(sim, sent).Result; System.Console.WriteLine($"Round {idxRun}:\tSent {sent},\tgot {received}."); System.Console.WriteLine(sent == received ? "Teleportation successful!!\n" : "\n"); } } }
static void Main(string[] args) { using (var sim = new QuantumSimulator()) { var rand = new System.Random(); foreach (var i in Enumerable.Range(0, 8)) { var sent = rand.Next(2) == 0; var received = TeleportClassicalMessage.Run(sim, sent).GetAwaiter().GetResult(); Console.WriteLine($"{i}回目: Sent {sent}, got {received}."); Console.WriteLine(sent == received ? "Teleportation 成功!!\n" : "\n"); } } Console.WriteLine("キーを押したら終了します..."); Console.ReadLine(); }
static void Main(string[] args) { // using (var qsim = new QuantumSimulator()) // { // //HelloQ.Run(qsim, int.MaxValue, int.MaxValue).Wait(); // TooManyQubits.Run(qsim).Wait(); // } var tsim = new ToffoliSimulator(qubitCount: 500000); TooManyQubits.Run(tsim).Wait(); var estimator = new ResourcesEstimator(); TeleportClassicalMessage.Run(estimator, false).Wait(); var data = estimator.Data; Console.WriteLine(estimator.ToTSV()); }
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async(context) => { if (context.Request.Path != Teleportation) { return; } var text = context.Request.Query.FirstOrDefault(x => x.Key == Text).Value; using (var sim = new QuantumSimulator()) { var b = System.Text.Encoding.UTF8.GetBytes(text); var inputs = b.SelectMany(x => ConvertByteToBoolArray(x)); var output = new List <bool>(); foreach (var input in inputs) { var received = TeleportClassicalMessage.Run(sim, input).Result; output.Add(received); } var outputBytes = new List <byte>(); for (int i = 0; i < b.Length; i++) { var r = ConvertBoolArrayToByte(output.Skip(8 * i).Take(8).ToArray()); outputBytes.Add(r); } var outputText = System.Text.Encoding.UTF8.GetString(outputBytes.ToArray()); var response = JsonConvert.SerializeObject(new { TeleportedText = outputText, QubitsCount = inputs.Count() }); context.Response.ContentType = "application/json"; await context.Response.WriteAsync(response); } }); }
static void Main(string[] args) { var sim = new QuantumSimulator(); var rand = new System.Random(); #region Teleport Classical Message foreach (var idxRun in Enumerable.Range(0, 8)) { var sent = rand.Next(2) == 0; var received = TeleportClassicalMessage.Run(sim, sent).Result; System.Console.WriteLine($"Round {idxRun}:\tSent {sent},\tgot {received}."); System.Console.WriteLine(sent == received ? "Teleportation successful!!\n" : "\n"); } #endregion #region Teleport Quantum Message // In this region, we call the TeleportQuantumMessage operation // from Operation.qs, which prepares a qubit in the |+〉 ≔ H|0〉 // state and asserts that the probability of observing a Zero // result is 50%. // Thus, we will run the operation several times and report // the mean. System.Console.WriteLine("\n\nPress Enter to continue...\n\n"); System.Console.ReadLine(); var averageResult = Enumerable.Range(0, 1000).Select((idx) => TeleportQuantumMessage.Run(sim).Result == Simulation.Core.Result.One ? 1 : 0 ).Average(); System.Console.WriteLine($"Frequency of '0' in teleported message: {averageResult}"); #endregion System.Console.WriteLine("\n\nPress Enter to exit...\n\n"); System.Console.ReadLine(); }