Created
November 3, 2021 00:13
-
-
Save mhlr/1def036f6ebebecc43ccde7518e27535 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"id": "e5006fcf-7aff-48b8-ae67-ec6b894e9ff7", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Populating the interactive namespace from numpy and matplotlib\n", | |
"Collecting git+https://github.com/Quantomatic/pyzx.git#master\n", | |
" Cloning https://github.com/Quantomatic/pyzx.git to /tmp/pip-req-build-nss9kdaf\n", | |
" Running command git clone -q https://github.com/Quantomatic/pyzx.git /tmp/pip-req-build-nss9kdaf\n", | |
" Resolved https://github.com/Quantomatic/pyzx.git to commit bc6967e889baa718fdaa467c3810ccb914e326bc\n", | |
"Requirement already satisfied: typing_extensions>=3.7.4 in ./anaconda3/lib/python3.8/site-packages (from pyzx==0.6.4) (3.10.0.2)\n", | |
"Requirement already satisfied: numpy>=1.14 in ./.local/lib/python3.8/site-packages (from pyzx==0.6.4) (1.19.4)\n", | |
"Requirement already satisfied: pyperclip>=1.8.1 in ./anaconda3/lib/python3.8/site-packages (from pyzx==0.6.4) (1.8.2)\n", | |
"Note: you may need to restart the kernel to use updated packages.\n" | |
] | |
} | |
], | |
"source": [ | |
"%pylab inline\n", | |
"from builtins import *\n", | |
"#import cytoolz as tl\n", | |
"import itertools as it\n", | |
"import functools as ft\n", | |
"\n", | |
"%pip install -U git+https://github.com/Quantomatic/pyzx.git#master\n", | |
"import pyzx as zx\n", | |
"from pyzx import VertexType as VT\n", | |
"from pyzx import EdgeType as ET\n", | |
"from fractions import Fraction as F" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"id": "ea2877ae-1779-401d-a117-d3b314644b7b", | |
"metadata": { | |
"tags": [] | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Graph(14 vertices, 13 edges)\n" | |
] | |
} | |
], | |
"source": [ | |
"i=2\n", | |
"Q = {}\n", | |
"g = zx.Graph()\n", | |
"g.set_inputs([])\n", | |
"g.set_outputs([])\n", | |
"\n", | |
"def rnd(n=20):\n", | |
" return -(np.random.randint(n)+1)\n", | |
"\n", | |
"@ft.lru_cache(None)\n", | |
"def atom(a):\n", | |
" q=abs(a)\n", | |
" input = g.add_vertex(VT.BOUNDARY, qubit=q, row=0)\n", | |
" g.inputs().append(input)\n", | |
" internal = g.add_vertex(VT.Z, qubit=q, row=1, phase=0)\n", | |
" g.add_edge((input, internal), ET.SIMPLE)\n", | |
" output = g.add_vertex(VT.BOUNDARY, qubit=q, row=2)\n", | |
" g.outputs().append(output)\n", | |
" g.add_edge((internal, output), ET.SIMPLE)\n", | |
" return internal\n", | |
"\n", | |
"def not_gate(n):\n", | |
" global i\n", | |
" i+=1\n", | |
" res = g.add_vertex(VT.X, phase=1, row=i, qubit=rnd())\n", | |
" g.add_edge((n, res), ET.SIMPLE)\n", | |
" return(res)\n", | |
"\n", | |
"def lit(l):\n", | |
" n = atom(abs(l))\n", | |
" if l < 0:\n", | |
" res = not_gate(n)\n", | |
" else:\n", | |
" res = n\n", | |
" return res\n", | |
"\n", | |
"def and_gate(nodes):\n", | |
" nodes = list(nodes)\n", | |
" global i\n", | |
" i+=1\n", | |
" h = g.add_vertex(VT.H_BOX, row=i, qubit=rnd())\n", | |
" for n in nodes:\n", | |
" g.add_edge((n, h), ET.SIMPLE)\n", | |
" i+=1\n", | |
" h2 = g.add_vertex(VT.H_BOX, row=i, qubit=rnd())\n", | |
" g.add_edge((h, h2))\n", | |
" return h2\n", | |
"\n", | |
"def or_gate(nodes):\n", | |
" return not_gate(and_gate(map(not_gate, nodes)))\n", | |
"\n", | |
"def clause(c):\n", | |
" return or_gate(map(lit, c))\n", | |
"\n", | |
"def cnf(frm):\n", | |
" global i\n", | |
" out = and_gate(map(clause, frm))\n", | |
" i+=1\n", | |
" res = g.add_vertex(VT.X, phase=1, row=i, qubit=rnd())\n", | |
" g.add_edge((out, res), ET.SIMPLE)\n", | |
" return res\n", | |
"\n", | |
"cnf1= [\n", | |
" #[-1 ,-2],\n", | |
" #[-1, 2],\n", | |
" #[1, -2],\n", | |
" [1, 2]\n", | |
"]\n", | |
"\n", | |
"cnf(cnf1)\n", | |
"\n", | |
"print(g)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"id": "bdebd88d-0d1b-4304-a439-013337e4eebc", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 2160x720 with 1 Axes>" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"g.normalize()\n", | |
"zx.draw_matplotlib(g, labels=True, h_edge_draw='box', show_scalar=True, figsize=(30,10))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"id": "8c7fe7fd-cb71-42e5-9049-5518f8f9d875", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([[[[ 0. +0.j, -0. -0.j],\n", | |
" [ 0. +0.j, 0. -0.j]],\n", | |
"\n", | |
" [[ 0. +0.j, 5.65685425-0.j],\n", | |
" [ 0. +0.j, 0. -0.j]]],\n", | |
"\n", | |
"\n", | |
" [[[-0. +0.j, 0. +0.j],\n", | |
" [ 5.65685425-0.j, -0. +0.j]],\n", | |
"\n", | |
" [[-0. +0.j, 0. +0.j],\n", | |
" [-0. -0.j, 5.65685425-0.j]]]])" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"g.to_tensor()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"id": "ad872b78-491a-4c47-a9d1-02fb8d53a162", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"id_simp: 2. 1 iterations\n", | |
"spider_simp: 1. 1 iterations\n", | |
"hpivot: 1. 1 iterations\n", | |
"par_hbox_intro_simp: 1. 1 iterations\n", | |
"id_simp: 1. 1 iterations\n", | |
"copy_simp: 1. 1 iterations\n", | |
"spider_simp: 1. 1 iterations\n", | |
"id_simp: 1. 1 iterations\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"6" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"zx.hsimplify.zh_simp(g, quiet=False)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"id": "416dde5d-cb97-4d45-bbbc-2e0efd674350", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Graph(4 vertices, 2 edges)\n" | |
] | |
} | |
], | |
"source": [ | |
"print(g)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"id": "5468ba73-de34-4342-9c25-4db470992fb2", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAADDIAAALeCAYAAADiPNCmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA7RklEQVR4nOzde/Dld13f8ddnL9lLolU0SrjbkEC0UCSDGFMDVq1VK6hYdIARxbFqOxWpAq3tuK6KtVBhHNrB6qBWG4uiVWxhtFRAkBi1MWiA4AXxRpGLGNzsLcnuu3+cTcnQzf7O7v7O+3PO7uMxk8nO5rfn+5qBv76ffZ7PqKoAAAAAAAAAAAAAAAB02DF7AAAAAAAAAAAAAAAAcPEQMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAAAAC0ETIAAAAAAAAAAAAAAABthAwAAAAAAAAAAAAAAEAbIQMAAAAAAAAAAAAAANBGyAAAAAAAAAAAAAAAALQRMgAAAAAAAAAAAAAAAG2EDAAAAAAAAAAAAAAAQBshAwAAAAAAAAAAAAAA0EbIAAAAAAAAAAAAAAAAtBEyAAAAAAAAAAAAAAAAbYQMAAAAAAAAAAAAAABAGyEDAAAAAAAAAAAAAADQRsgAAAAAAAAAAAAA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AADYiAwAAAAAAAAAAAAAAMBGZAAAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAsBEZAAAAAAAAAAAAAACAjcgAAAAAAAAAAAAAAABsRAYAAAAAAAAAAAAAAGAjMgAAAAAAAAAAAAAAABuRAQAAAAAAAAAAAAAA2IgMAAAAAAAAAAAAAADARmQAAAAAAAAAAAAAAAA2IgMAAAAAAAAAAAAAALARGQAAAAAAAAAAAAAAgI3IAAAAAAAAAAAAAAAAbEQGAAAAAAAAAAAAAABgIzIAAAAAAAAAAAAAAAAbkQEAAAAAAAAAAAAAANiIDAAAAAAAAAAAAAAAwEZkAAAAAAAAAAAAAAAANiIDAAAAAAAAAAAAAACwERkAAAAAAAAAAAAAAICNyAAAAAAAAAAAAAAAAGxEBgAAAAAAAAAAAAAAYCMyAAAAAAAAAAAAAAAAG5EBAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAMBGZAAAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAsBEZAAAAAAAAAAAAAACAjcgAAAAAAAAAAAAAAABsRAYAAAAAAAAAAAAAAGAjMgAAAAAAAAAAAAAAABuRAQAAAAAAAAAAAAAA2IgMAAAAAAAAAAAAAADARmQAAAAAAAAAAAAAAAA2IgMAAAAAAAAAAAAAALARGQAAAAAAAAAAAAAAgI3IAAAAAAAAAAAAAAAAbEQGAAAAAAAAAAAAAABgIzIAAAAAAAAAAAAAAAAbkQEAAAAAAAAAAAAAANiIDAAAAAAAAAAAAAAAwEZkAAAAAAAAAAAAAAAANiIDAAAAAAAAAAAAAACwERkAAAAAAAAAAAAAAICNyAAAAAAAAAAAAAAAAGxEBgAAAAAAAAAAAAAAYCMyAAAAAAAAAAAAAAAAG5EBAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAMBGZAAAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAsBEZAAAAAAAAAAAAAACAjcgAAAAAAAAAAAAAAABsRAYAAAAAAAAAAAAAAGAjMgAAAAAAAAAAAAAAABuRAQAAAAAAAAAAAAAA2IgMAAAAAAAAAAAAAADARmQAAAAAAAAAAAAAAAA2IgMAAAAAAAAAAAAAALARGQAAAAAAAAAAAAAAgI3IAAAAAAAAAAAAAAAAbEQGAAAAAAAAAAAAAABgIzIAAAAAAAAAAAAAAAAbkQEAAAAAAAAAAAAAANiIDAAAAAAAAAAAAAAAwEZkAAAAAAAAAAAAAAAANiIDAAAAAAAAAAAAAACwERkAAAAAAAAAAAAAAICNyAAAAAAAAAAAAAAAAGxEBgAAAAAAAAAAAAAAYCMyAAAAAAAAAAAAAAAAG5EBAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAMBGZAAAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAsBEZAAAAAAAAAAAAAACAjcgAAAAAAAAAAAAAAABsRAYAAAAAAAAAAAAAAGAjMgAAAAAAAAAAAAAAABuRAQAAAAAAAAAAAAAA2IgMAAAAAAAAAAAAAADARmQAAAAAAAAAAAAAAAA2IgMAAAAAAAAAAAAAALARGQAAAAAAAAAAAAAAgI3IAAAAAAAAAAAAAAAAbEQGAAAAAAAAAAAAAABgIzIAAAAAAAAAAAAAAAAbkQEAAAAAAAAAAAAAANiIDAAAAAAAAAAAAAAAwEZkAAAAAAAAAAAAAAAANiIDAAAAAAAAAAAAAACwERkAAAAAAAAAAAAAAICNyAAAAAAAAAAAAAAAAGxEBgAAAAAAAAAAAAAAYCMyAAAAAAAAAAAAAAAAG5EBAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAMBGZAAAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAsBEZAAAAAAAAAAAAAACAjcgAAAAAAAAAAAAAAABsRAYAAAAAAAAAAAAAAGAjMgAAAAAAAAAAAAAAABuRAQAAAAAAAAAAAAAA2IgMAAAAAAAAAAAAAADARmQAAAAAAAAAAAAAAAA2IgMAAAAAAAAAAAAAALARGQAAAAAAAAAAAAAAgI3IAAAAAAAAAAAAAAAAbEQGAAAAAAAAAAAAAABgIzIAAAAAAAAAAAAAAAAbkQEAAAAAAAAAAAAAANiIDAAAAAAAAAAAAAAAwEZkAAAAAAAAAAAAAAAANiIDAAAAAAAAAAAAAACwERkAAAAAAAAAAAAAAICNyAAAAAAAAAAAAAAAAGxEBgAAAAAAAAAAAAAAYCMyAAAAAAAAAAAAAAAAG5EBAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAMBGZAAAAAAAAAAAAAAAADYiAwAAAAAAAAAAAAAAsBEZAAAAAAAAAAAAAACAjcgAAAAAAAAAAAAAAABsAid99SfwTBqWAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 2160x720 with 1 Axes>" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"zx.draw_matplotlib(g, labels=True, h_edge_draw='box', show_scalar=True, figsize=(30,10))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"id": "cfa2bbbc-0fab-4eac-a981-f317b72ad82b", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([[[[2.82842712+0.j, 0. +0.j],\n", | |
" [0. +0.j, 0. +0.j]],\n", | |
"\n", | |
" [[0. +0.j, 2.82842712+0.j],\n", | |
" [0. +0.j, 0. +0.j]]],\n", | |
"\n", | |
"\n", | |
" [[[0. +0.j, 0. +0.j],\n", | |
" [2.82842712+0.j, 0. +0.j]],\n", | |
"\n", | |
" [[0. +0.j, 0. +0.j],\n", | |
" [0. +0.j, 2.82842712+0.j]]]])" | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"g.to_tensor()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "5bdc08d7-eae4-4958-8993-e7f50dbe3963", | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3 (ipykernel)", | |
"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.8.12" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment