{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using Yao" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1000-element Array{BitBasis.BitStr{3,Int64},1}:\n", " 101 ₍₂₎\n", " 010 ₍₂₎\n", " 101 ₍₂₎\n", " 000 ₍₂₎\n", " 101 ₍₂₎\n", " 010 ₍₂₎\n", " 000 ₍₂₎\n", " 111 ₍₂₎\n", " 011 ₍₂₎\n", " 010 ₍₂₎\n", " 011 ₍₂₎\n", " 001 ₍₂₎\n", " 110 ₍₂₎\n", " ⋮\n", " 010 ₍₂₎\n", " 111 ₍₂₎\n", " 110 ₍₂₎\n", " 011 ₍₂₎\n", " 111 ₍₂₎\n", " 101 ₍₂₎\n", " 111 ₍₂₎\n", " 001 ₍₂₎\n", " 111 ₍₂₎\n", " 010 ₍₂₎\n", " 100 ₍₂₎\n", " 010 ₍₂₎" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n=3\n", "results = zero_state(n) |> repeat(n, H) |> r -> measure(r, nshots=1000)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "using BitBasis, Plots, StatsBase, LinearAlgebra\n", "default(size=(400, 250))\n", "\n", "@recipe function user_recipe(measurements::Array{BitStr{n,Int},1}) where n\n", " max = (1< (0:max)\n", " tick_direction --> :out\n", " xrotation --> 45\n", " xformatter --> y -> \"|\"*string(Int(y); base=2, pad=3)*\">\"\n", " legend --> :none\n", "\n", " hist.edges[1] .- 0.5, hist.weights\n", "end" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "|000>\n", "\n", "\n", "|001>\n", "\n", "\n", "|010>\n", "\n", "\n", "|011>\n", "\n", "\n", "|100>\n", "\n", "\n", "|101>\n", "\n", "\n", "|110>\n", "\n", "\n", "|111>\n", "\n", "\n", "0.00\n", "\n", "\n", "0.03\n", "\n", "\n", "0.06\n", "\n", "\n", "0.09\n", "\n", "\n", "0.12\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(results)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "|000>\n", "\n", "\n", "|001>\n", "\n", "\n", "|010>\n", "\n", "\n", "|011>\n", "\n", "\n", "|100>\n", "\n", "\n", "|101>\n", "\n", "\n", "|110>\n", "\n", "\n", "|111>\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Simple six-sided die using preselection\n", "import YaoBlocks.ConstGate.P0\n", "\n", "block = chain(4, \n", " repeat(H, 1:3),\n", " control((2,3), 4=>X),\n", " put(4=>P0))\n", "\n", "results = zero_state(4) |> block |> r -> focus!(r, 1:3) |> r -> measure(r, nshots=10000)\n", "plot(results)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "kernelspec": { "display_name": "Julia 1.4.1", "language": "julia", "name": "julia-1.4" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.4.1" } }, "nbformat": 4, "nbformat_minor": 4 }