From 27c173df7477730fd7b317a4c90cb248c312645e Mon Sep 17 00:00:00 2001 From: miha-q <> Date: Sun, 4 Aug 2024 14:44:44 -0400 Subject: [PATCH] Sun Aug 4 02:44:44 PM EDT 2024 --- examples/toffoli.txt | 243 +++++++++++++++++++++++++++++++++++++++++++ src/index.html | 15 ++- src/src.zip | Bin 336064 -> 336074 bytes 3 files changed, 256 insertions(+), 2 deletions(-) create mode 100644 examples/toffoli.txt diff --git a/examples/toffoli.txt b/examples/toffoli.txt new file mode 100644 index 0000000..398551d --- /dev/null +++ b/examples/toffoli.txt @@ -0,0 +1,243 @@ +qreg q[3]; +creg c[3]; + +//000 +reset q[0]; +reset q[1]; +reset q[2]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +//ccx +h q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[1]; +t q[2]; +h q[2]; +cx q[0], q[1]; +t q[0]; +tdg q[1]; +cx q[0], q[1]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +print q; + +//001 +set q[0]; +reset q[1]; +reset q[2]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +//ccx +h q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[1]; +t q[2]; +h q[2]; +cx q[0], q[1]; +t q[0]; +tdg q[1]; +cx q[0], q[1]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +print q; + +//010 +reset q[0]; +set q[1]; +reset q[2]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +//ccx +h q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[1]; +t q[2]; +h q[2]; +cx q[0], q[1]; +t q[0]; +tdg q[1]; +cx q[0], q[1]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +print q; + +//011 +set q[0]; +set q[1]; +reset q[2]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +//ccx +h q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[1]; +t q[2]; +h q[2]; +cx q[0], q[1]; +t q[0]; +tdg q[1]; +cx q[0], q[1]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +print q; + +//100 +reset q[0]; +reset q[1]; +set q[2]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +//ccx +h q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[1]; +t q[2]; +h q[2]; +cx q[0], q[1]; +t q[0]; +tdg q[1]; +cx q[0], q[1]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +print q; + +//101 +set q[0]; +reset q[1]; +set q[2]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +//ccx +h q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[1]; +t q[2]; +h q[2]; +cx q[0], q[1]; +t q[0]; +tdg q[1]; +cx q[0], q[1]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +print q; + +//110 +reset q[0]; +set q[1]; +set q[2]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +//ccx +h q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[1]; +t q[2]; +h q[2]; +cx q[0], q[1]; +t q[0]; +tdg q[1]; +cx q[0], q[1]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +print q; + +//111 +set q[0]; +set q[1]; +set q[2]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +//ccx +h q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[2]; +cx q[1], q[2]; +tdg q[2]; +cx q[0], q[2]; +t q[1]; +t q[2]; +h q[2]; +cx q[0], q[1]; +t q[0]; +tdg q[1]; +cx q[0], q[1]; +measure q[0] -> c[0]; +measure q[1] -> c[1]; +measure q[2] -> c[2]; +print c; +print q; + diff --git a/src/index.html b/src/index.html index 3fea49f..877d18f 100644 --- a/src/index.html +++ b/src/index.html @@ -222,6 +222,7 @@ { ProgramTrack.STATE = [ [], [] ]; ProgramTrack.draw(); + displayResults([]); }, adjust: x => { @@ -846,7 +847,8 @@ return; } var a = document.createElement("a"); - a.href = "data:text/plain," + btoa(escape(JSON.stringify(ProgramTrack.STATE))); + var obj = { info: "QAnsel v0.4", data: ProgramTrack.STATE }; + a.href = "data:text/plain," + btoa(escape(JSON.stringify(obj))); a.download = "program.txt"; document.body.appendChild(a); a.click(); @@ -910,6 +912,10 @@ { $("td[onclick*=adjust]")[i].style.display = "none"; } + for (var i = 0; i < $("[pidx*='," + ProgramTrack.STATE[0].length + "']").length; i++) + { + $("[pidx*='," + ProgramTrack.STATE[0].length + "']")[i].style.display = "none"; + } $(".main-table")[0].cellPadding = 0; $(".main-table")[0].cellSpacing = 0; $(".program-track")[0].cellPadding = 0; @@ -960,6 +966,10 @@ { $("td[onclick*=adjust]")[i].style.display = ""; } + for (var i = 0; i < $("[pidx*='," + ProgramTrack.STATE[0].length + "']").length; i++) + { + $("[pidx*='," + ProgramTrack.STATE[0].length + "']")[i].style.display = ""; + } $(".main-table")[0].cellPadding = backups[6]; $(".main-table")[0].cellSpacing = backups[7]; $(".program-track")[0].cellPadding = backups[8]; @@ -1003,7 +1013,8 @@ { try { - ProgramTrack.STATE = JSON.parse(unescape(atob(reader.result))); + var obj = JSON.parse(unescape(atob(reader.result))); + ProgramTrack.STATE = obj.data; ProgramTrack.draw(); } catch diff --git a/src/src.zip b/src/src.zip index 7a927cb15878bd4225997f1f4b861e45f49254f3..8a951c617393a9c20b25f0fb651abe25bc7faebd 100644 GIT binary patch delta 8667 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 delta 8655 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 -- 2.39.5