{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Simon function periodicity" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from qlasskit import qlassf, Qint\n", "\n", "\n", "@qlassf\n", "def f(a: Qint[4]) -> Qint[4]:\n", " return (a >> 3) + 1" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.export(\"qiskit\").draw(\"mpl\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from qlasskit.algorithms import Simon\n", "\n", "q_algo = Simon(f)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qc = q_algo.export(\"qiskit\")\n", "qc.draw(\"mpl\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from qiskit import QuantumCircuit, transpile\n", "from qiskit.visualization import plot_histogram\n", "from qiskit_aer import AerSimulator\n", "\n", "qc.measure_all()\n", "simulator = AerSimulator()\n", "circ = transpile(qc, simulator)\n", "result = simulator.run(circ).result()\n", "counts = result.get_counts(circ)\n", "\n", "counts_readable = q_algo.decode_counts(counts)\n", "plot_histogram(counts_readable)" ] } ], "metadata": { "kernelspec": { "display_name": "qlasskit_310-env", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.13" } }, "nbformat": 4, "nbformat_minor": 2 }