{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "982215b2",
   "metadata": {},
   "source": [
    "# Programmation quantique\n",
    "## Notebook #1. Découverte de Qiskit et manipulation de circuits classiques\n",
    "\n",
    "Ce notebook est à compléter avec vos réponses puis à déposer sur la page Celene du cours __programmation quantique__ dans le dépôt aproprié avant le 5 novembre."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aeb913e6",
   "metadata": {},
   "source": [
    "## 0. Créer des circuits classiques avec un circuit quantique\n",
    "\n",
    "Les circuits quantiques sont suffisamment expressifs pour effectuer tout calcul réversible classique car ils disposent de portes comme la porte de Toffoli (aussi appelée CCX ou NON contrôlé contrôlé). C'est très pratique pour transformer des données et/ou faire subir une transformation à une superpositions de valeurs.\n",
    "\n",
    "Comme nous l'avons vu en cours, tout circuit booléen classique peut être reproduit efficacement sous forme de circuit réversible si on s'autorise à ajouter quelques bits de travail supplémentaires. Ces bits de travail sont initialisés à la valeur 0. En sortie du circuit, on récupère idéalement la sortie (si la fonction calculée est injective) ou l'entrée plus la sortie. Dans tous les cas, on peut remettre à 0 les bits de travail supplémentaires.\n",
    "\n",
    "Dans cette planche d'exercices, vous allez construire des circuits quantiques pour calculer des fonctions classiques avec Qiskit. Nous vous fournissons une fonction pour valider vos circuits. Ce validateur exécute une simulation quantique du circuit après avoir ajouté en entrée une superposition des bits d'entrée et en sortie des mesures sur les qubits vers de bits classiques.\n",
    "\n",
    "Dans vos circuits, vous vous contenterez d'utiliser les portes X (NON sur un seul qubit), CX (NON contrôlé) et CCX (NON contrôlé contrôlé)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3166e1d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit import QuantumCircuit, transpile\n",
    "from qiskit.providers.basic_provider import BasicProvider\n",
    "from qiskit.visualization import plot_histogram\n",
    "from qiskit.quantum_info import Operator\n",
    "\n",
    "# Un simulateur de circuit complet\n",
    "sim = BasicProvider().get_backend('basic_simulator')\n",
    "\n",
    "# Afficher un circuit\n",
    "def draw_circ(circ): display(circ.draw(output='mpl'))\n",
    "    \n",
    "def show(circ):\n",
    "    draw_circ(circ)\n",
    "    display(Operator(circ).draw('latex'))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9c714b6",
   "metadata": {},
   "source": [
    "Un circuit se déclare en instanciant la classe `QuantumCircuit` avec en argument le nombre de qubits souhaités. On enfile ensuite les portes comme des perles sur les bits du circuit. À tout moment, il est possible de visualiser le circuit avec la méthode `draw`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "7f12c383",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 162.08x284.278 with 1 Axes>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "moncircuit = QuantumCircuit(3)\n",
    "moncircuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "54bc03b5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 203.885x284.278 with 1 Axes>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "moncircuit.x(0) # ajoute une porte NON sur le qubit q0\n",
    "moncircuit.draw(output='mpl')  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a58ce552",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPEAAADuCAYAAADoS+FHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAATrUlEQVR4nO3de1STd57H8U8CYrhWMWhUkIuIAnKxIBU72sLgrhaxdqxnHKm6U7vudLzQHda009qxd0rL7s6q267OqbU927KsejpV0FOt2BE5VWHQlgJKi8AS4NFG0ELESkj2D4+MlIAk5sLv4fM6p8cjz+1rzZs8eZ4QFWaz2QwiEpbS1QMQ0b1hxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJzd/UAZJnZbMb1LqOrxxgyL093KBQKV48xIjHiYep6lxE+cz509RhD1nlqNby9Rrl6jBGJp9NEgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REghsREev1emi1WoSHh0OlUiEoKAhZWVkwGAxYu3YtFAoFduzY4eoxyUHMZjNOlLfiN6+WYmnWUSz752N49t/PoLbhmqtHswvZ/yjiuXPnsGjRIkiSBG9vb0RFRaGlpQXbtm1DXV0d2traAADx8fGuHdRBXt+UgOefiseTfziB9//8bb/lx997BMlx45Gw4lNUfdfuggkd67NSHbLzTqOq7mq/ZW+9X4kFyZPwzgsPInyKn/OHsxNZPxPr9XpkZGRAkiRkZ2ejtbUVFRUVkCQJubm5KCoqQllZGRQKBWJjY109rkO89M5ZVH7bhn/7lwcweYJXn2XPPBGNh2dPxNZ3KmQZcP6hOqRvOGIx4NuOftmC5FUHUVnb5rzB7EzWEW/atAk6nQ4bNmxAXl4efH19e5dptVrExcXBaDQiJCQEfn7ificeTLfRhDVbTsDbcxTee2le79cjQu7D6xsTcerry3h7T6ULJ3SMM5XfY82WE+jpMd91XX37DTyy/giuddx0wmT2J9uI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QEBA7+8feughBAQEIDMzEydPnsT8+fOtniUxMRGSJFm9HY0cGo0G5eXlNm0r24gbGxsBAMHBwRaXG41GlJaWAugb8Z0B35aYmAgAaG5utmkWSZJs3pbobmQbscFgAAB0dXVZXF5QUAC9Xg9fX1+EhoYOuq/jx48DACIjI22aRaPR2LQdjRz38hiRbcQajQbt7e2oqKhAcnJyn2Wtra3YvHkzACA2NhYKhWLA/TQ3N+PFF1/EwoULbb6XbOtpEtFQyPbCVlpaGgAgNzcXtbW1vV8vKytDSkoK9Ho9gMHf5NHZ2YlHH30UHh4e2L17t0PnJbKVbCPWarUYN24cmpqaEB0djZiYGEybNg1JSUkICwtDamoqgL6vh+/U1dWFjIwM1NfX48iRI5g4caIzxycaMtlGHBgYiJKSEqSnp0OlUqGhoQH+/v7YuXMnioqKep+dLUXc3d2Nxx9/HOXl5Th8+DCioqKcPT7RkMn6HVsD6ezshJ+fHxQKBTo6OuDl5dW7zGQyYcWKFThw4AAOHTrU+4xNNFzJ9sLWYKqqqmA2mxEREdEnYABYv3499u7di+eeew5eXl44depU77KpU6davAVF5EqyPZ0eTGVlJQDLp9KHDx8GALz55ptITk7u819RUZFT5yQaihH5TDxYxA0NDU6ehuje8JmYSHAj8sIWkZyMyGdiIjlhxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIJjxESCY8REgmPERIL7f+r11RoRTSGBAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 287.496x284.278 with 1 Axes>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "moncircuit.cx(0,1) # ajoute une porte NON contrôlé sur les qubits q0 (contrôle) et q1 (NON)\n",
    "moncircuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "034609c8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 538.33x284.278 with 1 Axes>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "moncircuit.ccx(0,1,2)\n",
    "# et maintenant on remet les qubits 0 et 1 à leur valeur initiale\n",
    "moncircuit.cx(0,1)\n",
    "moncircuit.x(0)\n",
    "moncircuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1ca7fef7",
   "metadata": {},
   "source": [
    "Voici le code de notre validateur. Il n'est pas nécessaire de comprendre comment il fonctionne pour l'utiliser dans les exercices de la planche."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d01a1f70",
   "metadata": {},
   "outputs": [],
   "source": [
    "def validator(ninput, circuit, outset):\n",
    "    \"\"\"Teste la fonction classique calculée par le circuit [circuit]\n",
    "       en considérant que les [ninput] premiers qubits reçoivent une\n",
    "       entrée binaire et que les autres qubits reçoivent en entrée 0.\n",
    "       Vérifie que l'ensemble des mesures des qubits en sortie du\n",
    "       circuit produit l'ensemble de valeurs [outset].\"\"\"\n",
    "    assert circuit.num_clbits == 0\n",
    "    n = circuit.num_qubits\n",
    "    nanc = n-ninput\n",
    "    assert nanc >= 0\n",
    "    head = QuantumCircuit(n, n)\n",
    "    for i in range(ninput):\n",
    "        head.h(i)\n",
    "    head.barrier()\n",
    "    tail = QuantumCircuit(n, n)\n",
    "    tail.barrier()\n",
    "    for i in range(n):\n",
    "        tail.measure(i, n-1-i)\n",
    "    full = head.compose(circuit).compose(tail)\n",
    "    display(full.draw(output='mpl'))\n",
    "    res = sim.run(full, shots=65536).result()\n",
    "    counts = res.get_counts(full)\n",
    "    display(plot_histogram(counts))\n",
    "    expset = set(counts.keys())\n",
    "    return outset == expset\n",
    "\n",
    "def classicset(ninput, nanc, f):\n",
    "    rset = set()\n",
    "    fs = '{:0' + str(ninput) + 'b}'\n",
    "    ss = '0' * nanc\n",
    "    for i in range(pow(2,ninput)):\n",
    "        s = fs.format(i) + ss\n",
    "        res = f(*map(int,s))\n",
    "        rset.add(''.join(map(str,res)))\n",
    "    return rset"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0c76785f",
   "metadata": {},
   "source": [
    "Le validateur est appliqué à un circuit en lui indiquant le nombre de bits d'entrée et les sorties attendues lorsque l'entrée parcourt toutes les valeurs. Le validateur affiche le circuit qu'il exécute, le résultats de la simulation et retourne `True` ou `False` selon que le circuit proposé passe ou non le test.\n",
    "\n",
    "Pour notre circuit d'exemple,\n",
    "\n",
    "| q0 in | q1 in | q0 out | q1 out | q2 out |\n",
    "| :-: | :-: | :-: | :-: | :-: |\n",
    "|0|0|0|0|1|\n",
    "|0|1|0|1|0|\n",
    "|1|0|1|0|0|\n",
    "|1|1|1|1|0|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0a2c75f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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7zuuWe9ud3m9uNgIJVwRqbjYCJfWe/mDXVq3jaFnAODvjh49qunTp+uJJ57Q119/fdEwc7bs7Gx98MEH+v3vf68FCxZUrHd+mImJidHIkSO9Vr87LH+EZsuWLRo0aJCysrIUGRmplJQUZWRk6IUXXtD+/ft1/PhxSVLHjh2NLRQAXPDSB7vkcFzmdGYuenHuDr3XrrdP9wkAqB6n06lly5bpX//6l4qLiytur1mzpn7xi18oKSlJzZo1U2xsrOx2u4qKipSenq4DBw5o27Zt2rJli5xOp8rKyvThhx9qw4YNGj16tN56661zwswTTzzhd5NqWDrQZGdn64YbblBWVpYmTpyoqVOnKioqSpL07LPP6pFHHlFwcLBsNpvat29vcLUAUD05eSX65+c/+Hy/85ek6m8Tu6l+3XCf7xsAUDWHw6F3331XS5YsqbgtNjZWI0aM0C9+8QuFhIRcsE7NmjWVnJys5ORkXX/99Tp69KgWL16sL7/8Uk6nU6mpqZo2bZqcP18LwF/DjGTxIWfjx49Xenq67r//fs2aNasizEjS5MmT1aFDB5WVlalp06aKjo42sFL4SkREhLp166aICNeG2wD+5N8rDqqgsHpDCDyppNSh+UtTfb5fwJPoA7Aap9Opf/zjH+eEmX79+mnmzJnq3bt3pWGmMvXr19fo0aM1ffr0itByJsxERUX5bZiRLBxodu3apXnz5ik2NlZPP/10pct06tRJktShQ4eK2z766CMNHz5cTZo0UUREhJKTk/XYY48pPz/fJ3XDuxo3bqwXX3xRjRs3NroUwG1GnsvCFM4wO/oArOY///mPvvzyS0mSzWbTfffdp7vvvlvh4e4dTa9Xr56Cg88dxOVwONzeni9YNtDMnTtXDodDo0aNUs2aNStd5swTc3agmTVrlux2u5566iktXrxY9913n1555RUNHDhQDofDJ7XDe8rLyyumKwTMasPObMP2vdHAfQOeQB+AlRw9elT//Oc/K36/99571atXL7e3d2YCgEOHDklSRbApKCjQW2+9VXHExt9YNtCcmYKuT58+VS6Tnp4u6dxA89lnn2n+/PkaNWqUevXqpQkTJuill17SN998o6+//tq7RcPr9u3bp759+2rfvn1GlwK4bccPJw3b967UHJWX8+UOzIs+ACt58803Ky502bdvX4+EmfMnADhzysa6deu0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",
      "text/plain": [
       "<Figure size 1040x367.889 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAGtCAYAAADd85oiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCp0lEQVR4nO3de1xUdf7H8fcMF7koqJQaeU8T73gPLQ1zRSXN0raLW65ZlqttamlXLbXWslJb07WypHY1q20zMzIIJfN+JbzlLUvT8EaCJsLM8P394YP5OQIGR0ZAXs/Hw8dDvufLzOec73fgPed852AzxhgBAACg2OylXQAAAEB5RZACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALPIt7QKuZLm5uTp8+LCqVKkim81W2uUAAIAiMMbo1KlTCg8Pl91+8XNOBCkvOnz4sOrUqVPaZQAAAAsOHjyo2rVrX7QPQcqLqlSpIuncQISEhJRyNQAAoCgyMzNVp04d9+/xiyFIeVHe5byQkBCCFAAA5UxRluWw2BwAAMAighQAVBArVqxQ3759FR4eLpvNpkWLFuXrs3PnTvXr10+hoaEKDg5Whw4ddODAgXz9jDHq3bt3gY+TlJSkzp07q0qVKqpVq5aefPJJOZ1O9/bk5GTddtttuuaaaxQcHKzIyEjNnz+/pHcXuCwIUgBQQfz+++9q3bq1Zs2aVeD2ffv26cYbb1RERISSk5OVmpqq8ePHKyAgIF/fGTNmFHjZ4/vvv1efPn3Uq1cvbdmyRR999JEWL16sp556yt1n9erVatWqlT799FOlpqZqyJAhuv/++7VkyZKS21ngcjHwmoyMDCPJZGRklHYpgPn222/Nrbfeaq655hojyXz22Wf5+uzYscP07dvXhISEmKCgINO+fXvz888/u7cPGzbMNGzY0AQEBJirrrrK9OvXz+zcudPjMdavX2+6d+9uQkNDTdWqVU3Pnj1NSkqKR5/c3Fzz6quvmsaNGxt/f38THh5uXnzxRa/sNwpW0By46667zF/+8pc//N4tW7aYa6+91vz666/5Hufpp5827du39+i/ePFiExAQYDIzMwt9zD59+pghQ4YUax8AbynO72/OSAEVREmcjWjXrp3mzZunnTt36uuvv5YxRj179pTL5ZIknT59Wr169VLdunW1bt06rVy5UlWqVFFMTIwcDof7cR577DHNnTtXr732mn744QctXrxYHTt29O4BwEXl5ubqyy+/1PXXX6+YmBjVqFFDnTp1ynfZ7syZM7r33ns1a9Ys1apVK9/jZGdn5zuDFRgYqLNnz2rTpk2FPn9GRoaqV69eIvuCwpXE5d2HH35Y1113nQIDA3X11Vfrtttu0w8//ODxGDabLd+/hQsXevSZNWuWmjZtqsDAQDVp0kQffPCBV/bZ67yf6yqusnRG6lLPRpw4ccKMHDnSXH/99SYgIMDUqVPHPProo+bkyZMej/HNN9+YqKgoU7lyZVOzZk0zbtw443A4PPp89NFHpnXr1iYwMNDUrVvXTJ061Wv7jYIVNAeKejbifN9//72RZPbu3WuMMWbDhg1Gkjlw4IC7T2pqqpFk9uzZY4w5N898fX3NDz/8cGk7gUty4RzIO7sUFBRkpk2bZrZs2WKmTJlibDabSU5OdvcbNmyYGTp0aKGP8/XXXxu73W4WLFhgnE6n+eWXX8xNN91kJJkFCxYUWMtHH31k/P39zbZt20p8P+EpPj7ePPvss+Z///tfgT8H9u7da6pXr27Gjh1rNm/ebPbu3Ws+//xzc+TIEXeft956y3z77bdm//79ZtOmTaZv376mTp06xul0uvtIMvPmzTO//vqr+19WVpZ7++zZs02VKlXMwoULzb59+8yHH35oKleubBYvXuz1Y1AUxfn9TZDyorIUpC71xbN161Zzxx13mMWLF5u9e/eapKQk07hxYzNgwAD3Y6SkpBh/f38zceJEs2fPHpOcnGwiIiLM448/7lGHr6+v+de//mX27dtnlixZYq655hozc+bMy3IccM6Fc8DlcpnKlSubSZMmmZ49e5qrr77adOzYscDAnef06dNm1KhRpkGDBiY7O9sYY0xmZqYJCwszzz//vMnOzjZnzpwxjz32mGnatKk7UL/yyivm+uuvN6+99pqpX7++qVevnhk6dKg5ceKEN3cZF7hwDhw6dMhIMvfcc49Hv759+5q7777bGGPM559/bho1amROnTpV6OMYY8zrr79uQkJCjI+PjwkKCjJTpkwxkszChQvz1bFs2TITFBRk3n///ZLbORSJt95QFfbY54uKijJPPPGER9uYMWNMly5divXc3kKQKiPKUpA6X0m9eD7++GPj7+/v/gVZlLUR99xzjxk4cKBH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zOjoaAUGBio+Pt5jn/r06VOsfaroUlNTy8U4eW/ulasf4V4RHx9fDsbJm3OPORAfH1/i47Rq1aoiP7/NlOG3NjabTZ999pn69+8vScrJyVFwcLCef/55Pffcc+5+Tz75pFauXKlVq1Zp2bJluuWWW/Tbb795nJWqV6+eRo0apdGjR2vChAlavHixx4tl//79atiwoTZv3qw2bdqoa9euatu2rWbMmOHuM2/ePI0aNUoZGRkF1lvQGak6dero+PHjCgkJkVSy72IaPvNVsY7nlWb/lD6SKsa7zcL2qdFzFfvDD/te6lUuxslbc6/x+IQiHqkr157JPcv8OEnem3vMgXNzoKTHKT09XWFhYcrIyHD//i5MuYqy/v7+6tChg0falKTdu3erXr16kqR27drJz89PSUlJGjBggCRp165dOnDggPssTlRUlF566SUdPXpUNWrUkCQlJiYqJCREzZo1c/e58J1AYmLiRc8EVapUSZUqVcrX7ufnJz8/P482Hx+fAi/P5b1IitpekeVd2rrw2ErnXiR2e/4lgIW1FzYeJTVOBdVY3PbCaq/I8samPIyTt+deRXX+GJSHcfLm3Kuozj8W3h6nAvsWuedlcvr0ae3du9f99f79+5WSkqLq1aurbt26Gjt2rO666y517dpV0dHRWrp0qb744gslJydLkkJDQzV06FCNGTNG1atXV0hIiB599FFFRUXphhtukCT17NlTzZo103333aepU6cqLS1Nzz33nEaMGOEOQo888ojefPNNjRs3Tg888ICWLVumjz/+WF9+WbFvggkAAP5fmQtSGzduVHR0tPvrMWPGSJIGDx6suLg43X777ZozZ46mTJmiv//972rSpIk+/fRT3Xjjje7vmT59uux2uwYMGKDs7GzFxMRo9uzZ7u0+Pj5asmSJhg8frqioKAUHB2vw4MGaNGmSu0+DBg305ZdfavTo0XrjjTdUu3ZtzZ07l1sfAAAAtzIXpG6++eY//ETKAw88oAceeKDQ7QEBAZo1a1ahN/WUzq2ZuvDSXUG1bNmy5eIFAwCACosFFwAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEUEKQAAAIsIUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEUEKQAAAIsIUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEVlLkitWLFCffv2VXh4uGw2mxYtWuTe5nA49OSTT6ply5YKDg5WeHi47r//fh0+fNjjMdLT0zVo0CCFhISoatWqGjp0qE6fPu3RJzU1VTfddJMCAgJUp04dTZ06NV8tn3zyiSIiIhQQEKCWLVsqPj7eK/sMAADKpzIXpH7//Xe1bt1as2bNyrftzJkz2rx5s8aPH6/Nmzfrf//7n3bt2qV+/fp59Bs0aJC2b9+uxMRELVmyRCtWrNCwYcPc2zMzM9WzZ0/Vq1dPmzZt0quvvqoXXnhBb7/9trvP6tWrdc8992jo0KHasmWL+vfvr/79+2vbtm3e23kAAFCu+JZ2ARfq3bu3evfuXeC20NBQJSYmerS9+eab6tixow4cOKC6detq586dWrp0qTZs2KD27dtLkmbOnKk+ffrotddeU3h4uObPn6+cnBy999578vf3V/PmzZWSkqJp06a5A9cbb7yhXr16aezYsZKkyZMnKzExUW+++abmzJnjxSMAAADKizIXpIorIyNDNptNVatWlSStWbNGVatWdYcoSerRo4fsdrvWrVun22+/XWvWrFHXrl3l7+/v7hMTE6NXXnlFv/32m6pVq6Y1a9ZozJgxHs8VExPjcanxQtnZ2crOznZ/nZmZKencJUmHwyFJstvt8vHxkcvlUm5urrtvXrvT6ZQxxt3u4+Mju91eYHtFl3c8nE6nR7ufn59yc3PlcrncbTabTb6+voW2FzYeJTFOdrvdPf55fH19C6y9sPbC9qmic7lc5WKcvDn3KjqHw1Euxsnbc68iczgcXhmnoirXQers2bN68skndc899ygkJESSlJaWpho1anj08/X1VfXq1ZWWlubu06BBA48+NWvWdG+rVq2a0tLS3G3n98l7jIJMmTJFEydOzNeekJCgoKAgSVLdunXVpk0bpaam6sCBA+4+TZo0UUREhNavX69jx4652yMjI1WvXj2tWLFCp06dcrdHRUUVfmAqCKfTqaysLC1fvtzd5uvrq9jYWB0/flxr1qxxt1epUkXdu3fXwYMHlZKS4m6/+uqr1blzZ+3Zs0e7du1yt5fkONWoUUMJCQkeL8zo6GgFBgbmW3fXp0+fYu1TRZeamlouxsl7c69c/wgvEfHx8eVgnLw595gD8fHxJT5Oq1atKvLz20wZfmtjs9n02WefqX///vm2ORwODRgwQL/88ouSk5PdQeof//iH3n//fY8DKUk1atTQxIkTNXz4cPXs2VMNGjTQW2+95d6+Y8cONW/eXDt27FDTpk3l7++v999/X/fcc4+7z+zZszVx4kQdOXKkwHoLOiNVp04dHT9+3F1fSb6LafjMV0U5jFes/VP6SKoY7zYL26dGz319sUN0xdv3Uq9yMU7emnuNxycU8UhdufZM7lnmx0ny3txjDpybAyU9Tunp6QoLC1NGRob793dhymWUdTgc+vOf/6yff/5Zy5Yt89jJWrVq6ejRox79nU6n0tPTVatWLXefC8NQ3td/1Cdve0EqVaqkSpUq5Wv38/OTn5+fR5uPj0+Bl+fyXiRFba/I8i5tXXhspXMvErs9/2cpCmsvbDxKapwKqrG47YXVXpHljU15GCdvz72K6vwxKA/j5M25V1Gdfyy8PU4FKXc/lfNC1J49e/TNN98oLCzMY3tUVJROnjypTZs2uduWLVum3NxcderUyd1nxYoVHu8AEhMT1aRJE1WrVs3dJykpyeOxExMTuaQGAADcylyQOn36tFJSUtzXqPfv36+UlBQdOHBADodDAwcO1MaNGzV//ny5XC6lpaUpLS1NOTk5kqSmTZuqV69eeuihh7R+/XqtWrVKI0eO1N13363w8HBJ0r333it/f38NHTpU27dv10cffaQ33njDY3H5Y489pqVLl+r111/XDz/8oBdeeEEbN27UyJEjL/sxAQAAZVOZC1IbN25UmzZt1KZNG0nSmDFj1KZNG02YMEGH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+uabbzRhwgSFhYXJz8+v0H7+/v4KCwvTs88+W+L3kVq9erVuu+02xcbGqn79+ho4cKB69uyp9evXSzp3NmrGjBl67rnndNttt6lVq1b64IMPdPjwYS1atEiStHPnTi1dulRz585Vp06ddOONN2rmzJlauHChDh8+LEmaP3++cnJy9N5776l58+a6++679fe//13Tpk0r0f0BAADlV7GC1AcffKBq1app5MiRf9h3xIgRql69uubNm2e5uIJ07txZSUlJ2r17tyTp+++/18qVK9W7d29J0v79+5WWlqYePXq4vyc0NFSdOnXSmjVrJElr1qxR1apV1b59e3efHj16yG63a926de4+Xbt2lb+/v7tPTEyMdu3apd9++61E9wkAAJRPxVpsvnr1avXo0UOVKlX6w76VKlVSjx49tGrVKsvFFeSpp55SZmamIiIi5OPjI5fLpZdeekmDBg2SJKWlpUmSatas6fF9NWvWdG9LS0tTjRo1PLb7+vqqevXqHn0uvOFo3mOmpaWpWrVq+WrLzs5Wdna2++vMzExJksPhcF8Ktdvt7rpzc3PdffPanU6nx3ovHx8f2e32Atsrurzj4XQ6Pdr9/PyUm5srl8vlbrPZbPL19S20vbDxKIlxstvtHpfCpXPzraDaC2svbJ8qOpfLVS7GyZtzr6JzOBzlYpy8PfcqMofD4ZVxKqpiBanDhw+rYcOGRe7foEEDff7558V5ij/08ccfa/78+VqwYIGaN2+ulJQUjRo1SuHh4Ro8eHCJPldxTZkyRRMnTszXnpCQoKCgIElS3bp11aZNG6WmpurAgQPuPk2aNFFERITWr1+vY8eOudsjIyNVr149rVixQqdOnXK3R0VFeXFPygen06msrCyPy8e+vr6KjY3V8ePH3WcgJalKlSrq3r27Dh48qJSUFHf71Vdfrc6dO2vPnj3atWuXu70kx6lGjRpKSEjweGFGR0crMDDQ49OuktSnT59i7VNFl5qaWi7GyXtzz/IHr68Y8fHx5WCcvDn3mAPx8fElPk7FOQlkM8V4a1O5cmUNHz5cr776apH6jx07Vv/617/yfRruUtSpU0dPPfWURowY4W578cUX9Z///Ec//PCDfvzxR1133XXasmWLIiMj3X26deumyMhIvfHGG3rvvff0+OOPe1yiczqdCggI0CeffKLbb79d999/vzIzM93r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5dSpU3rkkUeUmJgop9Opa665RsHBwQoLC1PPnj115513ut9UFbYUAOWX0+lUenq6atSoUdqllBnMcBTJ/Pnzdf3112vy5MmqW7euWrRooXHjxunrr7/W3LlzdfjwYd166606efIkIeoK9e9//1s///yzEhMT1bJlSzVr1kyvvvqqjhw5Ih8fH9ntdv3yyy+69957dezYsdIuF17yz3/+U1u3btWnn36q9PR0ffTRRxo6dKjCwsIUFxenMWPGKCMjQ5IIUVegN998U02aNNGjjz6q7777TmfOnMnXJzMzU1999ZUcDkcpVHj5MctRJH5+fjp9+rR++OEHSdLZs2eVk5MjSYqOjtYHH3wgp9OpxMTE0iwTXpSamqqHHnpIX3zxhVauXKkePXpo5syZCg8P180336yFCxfq008/1e7du9WwYcPSLhde8tVXX2no0KG66aabJEktWrTQww8/rA8++ECvvvqq1q1bp7/+9a+lWyS85sMPP1SzZs20bt063XzzzWrXrp1eeOEFbdu2zX0vqfnz52vixIn5PtF9pSJIoUjuvPNO2e12zZw5U2fPnlVAQID8/f3df/E7IiJCYWFh+vnnn0u5UnhDdna2mjdvrvr166tu3brq3Lmzpk+frnXr1unTTz9VrVq19Oijj2r06NF68sknS7tceInD4VDz5s312Wef6cSJE5LOXerJWxvTs2dPzZo1S3v37tW2bdtKuVqUtGPHjsnf31/Dhw/X+vXrtW3bNt1+++2Ki4tTZGSkunXrpjlz5mj27Nnq1KlTaZd72bBGCn8oNzfXfXfixx57TJmZmbrrrrs0fPhwtWnTRr/++quSk5M1bNgwbd26lU/oXKGys7N14sQJhYeH51v74nA49M033yg2NlYHDx7UtddeW4qVwpvWrl2r++67T3fffbdGjRrl8aldSfrll18UERGhXbt2MQ+uML/++qsWLlyo5s2be/zZH5fLpdWrV+u9997TZ599pszMzAr158EIUiiy7Oxs7du3T99++60+//xzrVy5UjabTddee60cDocGDRqkSZMmlXaZ8KJff/1V/v7++X55StLkyZM1b948/fjjj6VQGS4HY4ycTqfmzZunZ555Ri6XS3/+8591zz33qF69ekpJSdHixYu1detWbdy4sbTLhRdkZWVJkgIDAwv8sz9PPPGEli1bps2bN5dGeaWCIIWLOn78uD766CO9+uqrCgsLU/Xq1VWtWjV17NhRbdq00ZkzZ/Tjjz+qd+/eaty4MR+DvwLlzYHXXntNV199tUJCQhQeHq5+/fopNjZWgYGBys3N1dy5cxUeHp7v7ta4Mp08eVJxcXFasGCBUlJSFBoaqoCAALVt21ZPP/20brjhhtIuEZfZ2bNnFRkZqSFDhlSoS/wEKVzUAw88oO+//169e/dW5cqVdeLECe3du1eHDh1SvXr1NHHiRDVr1qy0y4QXnT8HqlSpohMnTmjnzp06ePCgGjdurDFjxigqKqq0y4SXZWVluf+WYh5jjLKysnT69Glt3bpVlStXrlBrYyqSgsa/oD4ff/yx7rnnHvn7+1+mykofQQqFMsaocuXKio+PV7du3dxte/fu1Xfffae5c+cqPT1d//3vf9WiRYtSrhbeUNgc2Ldvn7777ju98847ysjI0Mcff+xxXylceR5//HF16dJF7dq1U61atVSpUqV8fX777TdVq1atwEs+KN+KMv4nT55U1apVL39xpYxP7aFQO3bsUMOGDT3+1IfNZlPjxo31wAMPKCkpSZUqVeLvaF3BCpsDjRo10pAhQ5SUlCRfX1998sknpVglvG3BggWaPn267r77bkVHR+vpp5/W8uXLdeTIEfe9gjIzMzVkyBBt3bqVEHWFKWz8jx49KqfTKencnwm6//77K+SnNTkjhUJlZWXp1ltvldPpVFxcnOrXr5/vB+S0adO0YMECFpZeoZgDkKQHH3xQ/v7+euKJJ/Thhx9q7ty5+vnnn9WmTRvdeeediomJUUpKioYNG1ZhbsJYkTD+F8cZKRQqMDBQL774ojIzM3XfffdpwYIF+vXXX92f2sjOztbatWvVpEmTUq4U3sIcgNPpVMOGDVW1alU1bNhQzz77rPbv36+UlBS1b99eL7/8srp27aqHH35Y9913X2mXixLG+P8xzkjhD23dulWTJ0/WF198ocqVK+vGG29UrVq19PXXX+uqq67S3Llz1apVq9IuE17EHKjYTp48qSNHjqhJkybKycmRn5+fx5nJ+fPn67777tOWLVvUunXrUqwU3sD4XxxBCkV29OhRLVmyRIsWLVJgYKBatGihgQMHqmnTpqVdGi4T5gDy5ObmyhgjHx8fvfPOO3rssccK/LtruDIx/v+PIAVL+KvuYA4gz7Rp0+RyuTR27NjSLgWloKKPP0EKAHBJHA6HfHx8CNYVVEUff4IUAACARRUzPgIAAJQAghQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAov8DiSm4Re1pw+AAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "validator(2, moncircuit, classicset(2, 1, lambda x,y,z: (x,y,(1-x)*(1-y))))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d233d317",
   "metadata": {},
   "source": [
    "## 1. Portes logiques classiques\n",
    "\n",
    "Les circuits booléens classiques sont souvent composés avec les portes NON, ET et OU. À vous de proposer pour chacune des portes ci-dessous une version quantique qui accepte en entrée les bits d'entrée de la porte simulée et produit en sortie ces mêmes bits accompagnés de la valeur calculée par la porte. Nous fournissons le test de validation qui doit retourner `True` pour valider votre solution."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4679fde0",
   "metadata": {},
   "source": [
    "### Porte NON\n",
    "\n",
    "La porte `NON` inverse la valeur du bit reçu en entrée.\n",
    "\n",
    "|x|NON(x)|\n",
    "| :-: | :-: |\n",
    "|0|1|\n",
    "|1|0|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "006d0138",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 788.961x284.278 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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R1WKi4vldru9fiSptLTU/ikvL5d0elSsqvKysjKvco/Hc9ZyoLad6753Zllpaaksy5JlWedcLp0+ps8sq7i9Xl15dcdNbR1P9Mm3fQJ8wVfH07mq0WTzN954Q82bN9eECRN+su748eM1d+5cLVmyRPHx8TXZTLWOHTum77//Xk888YQee+wxPfnkk0pNTdXNN9+sjRs36rrrrlNWVpYCAgLUrFkzr/e2adNGWVlZkqSsrCyvEFWxvGLZ2eq43W4VFRUpKCioUvvmzp2r2bNnVypfu3atGjduLEmKiopSz549tXv3bq95XTExMercubO2b9+unJwcu7xHjx5q3769Nm/erIKCArucv2EIX0lJSZF09n0vLCxMa9eu9TrZxMfHKygoyH5/hRtuuEFFRUVeF1V+fn5KTExUbm6u18VJcHCwBgwYoMOHDyszM9Mub926ta666iodOHBA+/fvt8tr83iiT77tE+ArKSkptX48bdmy5Zy3X6Nbe506dVKfPn3O+U++3H777dq+fbu++uqrc26QV+N+dGvv6NGjuuSSS3T77bdr6dKldr0bb7xRTZo00dtvv62lS5cqKSlJxcXFXuu64oorFB8fryeffFJjx47VN9984zXfqbCwUE2aNFFKSoqGDh2qyy67TElJSZoxY4ZdJyUlRYmJiSosLKwySBUXF3tt1+12KzIyUrm5ufbQoNPplMvlUnl5udeoUkV5WVmZzvwncblccjqdVZZ3fODDmn6kwE868OhgSWff95xOpz1aUcHP7/R12Y+v5Kor9/f3l8fj8RqtcDgc8vPzq7a8uuOmNo4n+uTbPl364LlNiQBq6sCjg2v9eMrLy1PLli3P6dZejUakjh49qo4dO55z/Q4dOugf//hHTTZxVq1atZKfn1+lP4LcpUsXffzxx5Kk8PBwlZSU6OTJk16jUtnZ2QoPD7frbN++3WsdFd/qO7POj7/pl52drZCQkCpDlCQFBgYqMDCwUrm/v3+lW6Eul0sul6tS3YqT2bmWA7Xtx/tqdftedbf3a1LudDrldFaeYVBdeXXHTW0dT/TJt30CfOHMfdbXx1NVajRHqqqrm7MpLS2t8iAzFRAQoL59+3oN20nSv//9b7Vv316S1Lt3b/n7+2v9+vX28v379+vQoUP27bC4uDjt2bNHx44ds+usW7dOISEhdkiLi4vzWkdFHW6pAQCACjUa5oiIiPD6FttP2bt3ry655JIaNej777/Xl19+ab8+ePCgMjMz1aJFC0VFRWnKlCm67bbb1L9/f8XHxys1NVUffPCB0tLSJEmhoaEaM2aMJk+erBYtWigkJEQTJ05UXFycrrzySknS4MGDFRsbq1GjRmnevHnKysrSQw89pPHjx9sjSuPGjdPChQs1depU3XXXXdqwYYPeffddrV7NN08AAMBpNRouuvbaa7VhwwZ9/fXXP1n366+/1oYNG9S/f/8aNWjnzp3q2bOnevbsKUmaPHmyevbsaT/j6aabbtJLL72kefPmqVu3blq8eLHef/99XXPNNfY6nn32WQ0bNky33HKL+vfvr/DwcP3v//6vvdzlcmnVqlVyuVyKi4vT73//e915552aM2eOXadDhw5avXq11q1bp+7du+uZZ57R4sWLlZCQUKP+AACAC1eNJpt/8skn6tOnj3r16qXU1NRqH7h5/PhxDRkyRJ988ol27NihXr161VqDGxKeI4WGiOdIwRc4X8FX6vo5UjW6tderVy9NmjRJzz33nGJjYzVu3DjFx8erXbt2kqQjR45o/fr1euWVV5STk6PJkydftCEKAABc+Gr8VbBnnnlGjRo10lNPPaXHH39cjz/+uNdyy7Lkcrk0Y8YMPfbYY7XWUAAAgPqmxkHK4XDor3/9q8aMGaMlS5Zo69at9kMsw8PDdfXVV+sPf/iDLr300lpvLAAAQH1i/HCiSy+9lBEnAABwUau9hzwBAABcZAhSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhhpckCovL9fMmTPVoUMHBQUF6dJLL9Wjjz4qy7LsOpZladasWWrbtq2CgoI0aNAgHThwwGs9eXl5uuOOOxQSEqJmzZppzJgx+v77773q7N69W9dee60aNWqkyMhIzZs372fpIwAAaBgaXJB68skn9eKLL2rhwoX6/PPP9eSTT2revHl64YUX7Drz5s3T888/r5deekkZGRlq0qSJEhIS9MMPP9h17rjjDu3bt0/r1q3TqlWrtHnzZo0dO9Ze7na7NXjwYLVv3167du3SU089pUceeUSvvPLKz9pfAABQf/nVdQNqauvWrRo+fLgSExMlSdHR0Xr77be1fft2SadHo5577jk99NBDGj58uCTpjTfeUJs2bbRixQqNHDlSn3/+uVJTU7Vjxw716dNHkvTCCy/ohhtu0NNPP62IiAi99dZbKikp0WuvvaaAgAB17dpVmZmZmj9/vlfgAgAAF68GF6SuuuoqvfLKK/r3v/+tyy67TJ9++qk+/vhjzZ8/X5J08OBBZWVladCgQfZ7QkND1a9fP6Wnp2vkyJFKT09Xs2bN7BAlSYMGDZLT6VRGRoZuuukmpaenq3///goICLDrJCQk6Mknn9SJEyfUvHnzSm0rLi5WcXGx/drtdkuSSktLVVpaKklyOp1yuVwqLy+Xx+Ox61aUl5WVed2mdLlccjqdVZYDvlCxr55t33M6nXa9Cn5+p08nZWVl51Tu7+8vj8ej8vJyu8zhcMjPz6/a8uqOm9o4nuiTb/sE+EppaalPjqdz1eCC1PTp0+V2u9W5c2f7w3n88cd1xx13SJKysrIkSW3atPF6X5s2bexlWVlZCgsL81ru5+enFi1aeNXp0KFDpXVULKsqSM2dO1ezZ8+uVL527Vo1btxYkhQVFaWePXtq9+7dOnTokF0nJiZGnTt31vbt25WTk2OX9+jRQ+3bt9fmzZtVUFBgl8fFxZ3tYwKMpaSkSDr7vhcWFqa1a9d6nWzi4+MVFBRkv7/CDTfcoKKiIm3cuNEu8/PzU2JionJzc5Wenm6XBwcHa8CAATp8+LAyMzPt8tatW+uqq67SgQMHtH//fru8No8n+uTbPgG+kpKSUuvH05YtW855+w7rzCjWALzzzjuaMmWKnnrqKft226RJkzR//nyNHj1aW7du1dVXX62jR4+qbdu29vt++9vfyuFwaNmyZfrrX/+q119/3evDlqSwsDDNnj1b9913nwYPHqwOHTro5Zdftpd/9tln6tq1qz777DN16dKlUtuqGpGKjIxUbm6uQkJCJNXu1WbHBz48j08SqNqBRwdLajgjHRfi6M2F2KdLH0wV4AsHHh1c68dTXl6eWrZsqfz8fPv3d3Ua3IjUlClTNH36dI0cOVKS1K1bN33zzTeaO3euRo8erfDwcElSdna2V5DKzs5Wjx49JEnh4eE6duyY13rLysqUl5dnvz88PFzZ2dledSpeV9T5scDAQAUGBlYq9/f3l7+/v1eZy+Wq8vZcxcnsXMuB2vbjfbW6fe/H9UzKnU5nlbd9qiuv7ripreOJPvm2T4AvnLnP+vp4qkqDu3FdWFhY6cB1uVx20uzQoYPCw8O1fv16e7nb7VZGRoZ9OywuLk4nT57Url277DobNmyQx+NRv3797DqbN2/2uppbt26dYmJiqrytBwAALj4NLkj9+te/1uOPP67Vq1fr66+/1vLlyzV//nzddNNNkk4PLU+aNEmPPfaYVq5cqT179ujOO+9URESERowYIUnq0qWLhgwZonvuuUfbt2/Xli1bNGHCBI0cOVIRERGSpN/97ncKCAjQmDFjtG/fPi1btkwLFizQ5MmT66rrAACgnmlw94teeOEFzZw5U3/84x917NgxRURE6N5779WsWbPsOlOnTtWpU6c0duxYnTx5Utdcc41SU1PVqFEju85bb72lCRMmaODAgXI6nbrlllv0/PPP28tDQ0O1du1ajR8/Xr1791arVq00a9YsHn0AAABsDW6yeUPidrsVGhp6TpPVTERPX13r6wS+fiKxrpuACxDnK/iKL85ZNfn93eBu7QEAANQXBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBCkAAABDBKlzsGjRIkVHR6tRo0bq16+ftm/fXtdNAgAA9QBB6icsW7ZMkydP1sMPP6xPPvlE3bt3V0JCgo4dO1bXTQMAAHWMIPUT5s+fr3vuuUdJSUmKjY3VSy+9pMaNG+u1116r66YBAIA65lfXDajPSkpKtGvXLs2YMcMuczqdGjRokNLT0yvVLy4uVnFxsf06Pz9fkpSXl6fS0lL7/S6XS+Xl5fJ4PF7rdblcKisrk2VZdrnL5ZLT6ayy3FNcWHudBf7P8ePHJZ1933M6nfY+XcHP7/TppKys7JzK/f395fF4VF5ebpc5HA75+flVW17dcVMbxxN98m2fOF/BV44fP17rx1NeXp4keS2rDkHqLHJzc1VeXq42bdp4lbdp00ZffPFFpfpz587V7NmzK5V36NDBZ20Ealur5+q6BQBw7nx5ziooKFBoaOhZ6xCkatGMGTM0efJk+7XH41FeXp5atmwph8NRhy27uLndbkVGRurw4cMKCQmp6+YAwFlxzqp7lmWpoKBAERERP1mXIHUWrVq1ksvlUnZ2tld5dna2wsPDK9UPDAxUYGCgV1mzZs182UTUQEhICCclAA0G56y69VMjURWYbH4WAQEB6t27t9avX2+XeTwerV+/XnFxcXXYMgAAUB8wIvUTJk+erNGjR6tPnz664oor9Nxzz+nUqVNKSkqq66YBAIA6RpD6CbfddptycnI0a9YsZWVlqUePHkpNTa00AR31V2BgoB5++OFKt10BoD7inNWwOKxz+W4fAAAAKmGOFAAAgCGCFAAAgCGCFAAAgCGCFAAAgCGCFAAAgCGCFAAAgCGCFAAA9VDF04l4SlH9RpDCRcHj8dR1EwCgRir+2H3Ffy3LIlTVQzyQExeVihOR08k1BID6KyUlRSdOnFBZWZlat26tfv36qWXLlnXdLFSBPxGDC9qJEyfUq1cv3XLLLUpKSlLXrl3tqzuPxyOHwyGHw6H9+/erbdu2/KV1AHWqoKBA48aN07p161RWVqaIiAg1bdpULVu21K9+9Sv99re/Vfv27WVZln0uQ93ishwXtDfffFPffPON1q1bp27duik2NlZPPfWUsrOz5XQ65XA49O2332rkyJHKzc2t6+YCuMg9//zz2rNnj95//33l5eXpnXfeUVJSkpo3b6633npLU6dOVX5+PiGqHuHWHi5od999t1wulx588EF9++23euedd7RixQodOXJE1157rcaNG6fs7Gw98MADOnXqVF03F8BF7pprrtFvfvMb/fnPf/Yq93g8+uijj3TPPfeoV69eWr58eR21ED/GiBQuWMXFxeratauio6MVFRWlq666Ss8++6wyMjL0/vvvKzw8XBMnTtT999+vadOm1XVzAVzkSktL1bVrVy1fvlzHjx+XJJWVlam8vFxOp1ODBw/WokWL9OWXX2rv3r113FpUYEQKF7Ti4mIdP35cERER8ng8XpPMS0tL9dFHHykxMVGHDx/WJZdcUoctBQBp27ZtGjVqlEaOHKlJkyZVmmD+7bffqnPnztq/fz/nrHqCESlc0AIDA+VwOHT8+PFK39Tz9/fXzp07FR0dzQkJQJ2zLEu9e/fWlClT9OKLL6pTp0669957lZaWpoMHD2r58uWaOXOmOnfuzDmrHmFEChek3NxcLVu2TE8//bRat26tkJAQRURE6MYbb1RiYqKCgoLk8Xi0ePFiRUREaNiwYXXdZACwnTx5UsnJyVq6dKkyMzMVGhqqRo0aqVevXpoxY4auvPLKum4i/g9BCheku+66S59++qmGDh2q4OBgHT9+XJ9//rkOHz6sX/ziF5o8ebLi4uLqupkAIEkqKipSUFCQV5llWSoqKtL333+vPXv2qGnTpurXr18dtRDVIUjhgmNZlpo2baqUlBRdd911dtlXX32lf/7zn/rb3/6m/Px8vfvuu+ratWsdtxYApP/6r//S1Vdfrd69eys8PFyBgYGV6pw4cULNmzfnGVL1DHOkcMH57LPP1LFjRzVp0sQuczgc6tSpk5KSkrR+/Xr5+fnpvffeq8NWAsBpS5cu1bPPPquRI0cqPj5eM2bM0MaNG5Wdna3S0lJJktvtVlJSkvbs2UOIqmcYkcIFp6ioSMOGDVNZWZmSk5MVHR1d6cQzf/58LV26VDt37qyjVgLAaXfffbcCAgL0l7/8RW+//bYWL16sb775Rj179tRvfvMbJSQkKDMzU2PHjrWDFeoPRqRwwQkKCtJjjz0mt9utUaNGaenSpfruu+9UVFQk6fQjEbZt26aYmJg6bimAi11ZWZk6duyoZs2aqWPHjnrwwQd18OBBZWZmqk+fPnriiSfUv39/3XvvvRo1alRdNxdVYEQKF6w9e/bo0Ucf1QcffKCmTZvqmmuuUXh4uNasWaNWrVpp8eLFuvzyy+u6mQAucidPnlR2drZiYmJUUlIif39/r1H0t956S6NGjdK//vUvde/evQ5biqoQpHDBO3bsmFatWqUVK1YoKChIv/zlL3XrrbeqS5cudd00AKiSx+ORZVlyuVz629/+pj//+c8qLCys62ahCgQpXFR+/HRzAKjv5s+fr/Lyck2ZMqWum4IqEKQAAKjHSktL5XK5uAispwhSAAAAhoi3AAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhghSAAAAhv4fUT8B/2CtuvQAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circuitNON = QuantumCircuit(2) # un bit d'entrée, un bit de sortie\n",
    "\n",
    "### AJOUTER ICI CE QU'IL FAUT POUR MODIFIER LE CIRCUIT\n",
    "### ALLEZ, C'EST LE PREMIER, ON VOUS PROPOSE UNE SOLUTION ;-)\n",
    "### CE N'EST PAS LA MEILLEURE, VOUS POUVEZ LE FAIRE AVEC UNE PORTE DE MOINS\n",
    "\n",
    "circuitNON.x(0)\n",
    "circuitNON.cx(0,1)\n",
    "circuitNON.x(0)\n",
    "\n",
    "### ET VOICI LE TEST QUI DOIT RENVOYER TRUE\n",
    "validator(1, circuitNON, classicset(1,1, lambda x,y: (x,1-x)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "38301d59",
   "metadata": {},
   "source": [
    "### Porte ET\n",
    "\n",
    "La porte `ET` teste si les deux bits en entrée sont à 1.\n",
    "\n",
    "|x|y|ET(x,y)|\n",
    "| :-: | :-: | :-: |\n",
    "|0|0|0|\n",
    "|0|1|0|\n",
    "|1|0|0|\n",
    "|1|1|1|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9535d66f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 621.941x367.889 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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lbkTunXrpkGDBkmSgoODtWHDBk2bNk3t2rUryPI0ZswYDR8+PFv7kiVLVKJECUlS1apVFRISol27dikuLs7Zp27duqpXr562bNmis2fPOtuDg4NVrVo1rVmzRpcuXXK2h4aGunBLiob09HQlJydr5cqVzjZ3d3dFRETo3LlzWc4elipVSvfff7+OHz+umJgYZ3v58uXVunVrHTp0SAcOHHC25+c4BQYGasmSJVl+MMPCwuTj46Po6Ogs29SlS5c8bVNxt2vXriIxTq6be0XqV7hLREdHF4FxcuXcYw5ER0fn+zitX7/+ptdvM4X40MZms2V5115qaqp8fX31/vvv67333nP2Gzx4sNatW6f169drxYoVeuCBB3ThwoUsZ6WqVaumgQMHatCgQRo2bJgWLFiQ5YclNjZWNWvW1I4dOxQSEqK2bduqadOmmjhxorPPzJkzNXDgQCUmJuZYb05npKpUqaJz587Jz89PUv4exdR893952p93mtgxXSQVj6PN3Lap9nvF+80PR0Z3KhLj5Kq5V2fokpvcU3euQyM7Fvpxklw395gD1+ZAfo9TQkKCAgIClJiY6Pz7nZsiFWU9PT3VokWLLGlTkg4ePKhq1apJkpo1ayYPDw8tX75cjz76qCTpwIEDiouLc57FCQ0N1ejRo3XmzBkFBgZKkpYuXSo/Pz81aNDA2eePRwJLly694ZkgLy8veXl5ZWv38PCQh4dHljY3N7ccL89d//iFm2kvzjIvbf1x30rXfkjs9uy3AObWntt45Nc45VRjXttzq704yxybojBOrp57xdX1Y1AUxsmVc6+4un5fuHqccux70z1vk8uXL+vw4cPOr2NjYxUTEyN/f39VrVpVb775pp544gm1bdtWYWFhWrRokX788UetWrVKklS6dGn17dtXkZGR8vf3l5+fn1555RWFhobq3nvvlSR17NhRDRo00DPPPKOxY8cqPj5e7733nvr37+8MQi+//LKmTJmit956S88995xWrFih7777TgsX8twWAABwTaELUtu2bVNYWJjz68jISElS7969FRUVpe7du2vatGkaM2aMXn31VdWtW1dz585VmzZtnN/zySefyG6369FHH83yQM5Mbm5u+umnn9SvXz+FhobK19dXvXv31ogRI5x9atSooYULF2rQoEGaNGmSKleurC+//JJHHwAAAKdCF6Tat2//p+9Iee655/Tcc8/lutzb21tTp07N9aGe0rV7pv546S6nWnbu3HnjggEAQLHFDRcAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEUEKQAAAIsIUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEUEKQAAAIsIUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEUEKQAAAIsIUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFhS5IrVmzRl27dlVQUJBsNpvmz5/vXJaWlqbBgwerUaNG8vX1VVBQkHr16qWTJ09meY2EhAT17NlTfn5+KlOmjPr27avLly9n6bNr1y795S9/kbe3t6pUqaKxY8dmq+X7779XvXr15O3trUaNGik6Otol2wwAAIqmQhekfv/9dzVp0kRTp07NtuzKlSvasWOHhg4dqh07dui///2vDhw4oIceeihLv549e2rv3r1aunSpfvrpJ61Zs0Yvvviic3lSUpI6duyoatWqafv27Ro3bpw++OADff75584+GzZs0FNPPaW+fftq586devjhh/Xwww9rz549rtt4AABQpLgXdAF/1LlzZ3Xu3DnHZaVLl9bSpUuztE2ZMkUtW7ZUXFycqlatqv3792vRokXaunWrmjdvLkmaPHmyunTpor///e8KCgrSrFmzlJqaqhkzZsjT01MNGzZUTEyMJkyY4AxckyZNUqdOnfTmm29KkkaOHKmlS5dqypQpmjZtmgv3AAAAKCoKXZDKq8TERNlsNpUpU0aStHHjRpUpU8YZoiSpQ4cOstvt2rx5s7p3766NGzeqbdu28vT0dPYJDw/Xxx9/rAsXLqhs2bLauHGjIiMjs6wrPDw8y6XGP0pJSVFKSorz66SkJEnXLkmmpaVJkux2u9zc3ORwOJSRkeHsm9menp4uY4yz3c3NTXa7Pcf24i5zf6Snp2dp9/DwUEZGhhwOh7PNZrPJ3d091/bcxiM/xslutzvHP5O7u3uOtefWnts2FXcOh6NIjJMr515xl5aWViTGydVzrzhLS0tzyTjdrCIdpK5evarBgwfrqaeekp+fnyQpPj5egYGBWfq5u7vL399f8fHxzj41atTI0qdChQrOZWXLllV8fLyz7fo+ma+RkzFjxmj48OHZ2pcsWaISJUpIkqpWraqQkBDt2rVLcXFxzj5169ZVvXr1tGXLFp09e9bZHhwcrGrVqmnNmjW6dOmSsz00NDT3HVNMpKenKzk5WStXrnS2ubu7KyIiQufOndPGjRud7aVKldL999+v48ePKyYmxtlevnx5tW7dWocOHdKBAwec7fk5ToGBgVqyZEmWH8ywsDD5+Phku++uS5cuedqm4m7Xrl1FYpxcN/eK9K/wfBEdHV0ExsmVc485EB0dne/jtH79+ptev80U4kMbm82mefPm6eGHH862LC0tTY8++qh+++03rVq1yhmkPvzwQ3311VdZdqQkBQYGavjw4erXr586duyoGjVq6LPPPnMu37dvnxo2bKh9+/apfv368vT01FdffaWnnnrK2efTTz/V8OHDdfr06RzrzemMVJUqVXTu3Dlnffl5FFPz3f/dzG68Y8WO6SKpeBxt5rZNtd9bfKNddMc7MrpTkRgnV829OkOX3OSeunMdGtmx0I+T5Lq5xxy4Ngfye5wSEhIUEBCgxMRE59/v3BTJKJuWlqbHH39cx44d04oVK7JsZMWKFXXmzJks/dPT05WQkKCKFSs6+/wxDGV+/Wd9MpfnxMvLS15eXtnaPTw85OHhkaXNzc0tx8tzmT8kN9tenGVe2vrjvpWu/ZDY7dnfS5Fbe27jkV/jlFONeW3PrfbiLHNsisI4uXruFVfXj0FRGCdXzr3i6vp94epxykmR+62cGaIOHTqkZcuWKSAgIMvy0NBQXbx4Udu3b3e2rVixQhkZGWrVqpWzz5o1a7IcASxdulR169ZV2bJlnX2WL1+e5bWXLl3KJTUAAOBU6ILU5cuXFRMT47xGHRsbq5iYGMXFxSktLU09evTQtm3bNGvWLDkcDsXHxys+Pl6pqamSpPr166tTp0564YUXtGXLFq1fv14DBgzQk08+qaCgIEnS008/LU9PT/Xt21d79+7Vt99+q0mTJmW5ufy1117TokWLNH78eP3yyy/64IMPtG3bNg0YMOC27xMAAFA4FbogtW3bNoWEhCgkJESSFBkZqZCQEA0bNkwnTpzQggUL9Ntvvyk4OFiVKlVy/tuwYYPzNWbNmqV69erpgQceUJcuXdSmTZssz4gqXbq0lixZotjYWDVr1kyvv/66hg0bluVZU61bt9bs2bP1+eefq0mTJvrPf/6j+fPn65577rl9OwMAABRqhe5ie/v27W/41t6buTfe399fs2fPvmGfxo0ba+3atTfs89hjj+mxxx770/UBAIDiqdCdkQIAACgqCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEUEKQAAAIsIUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsshyk1qxZo7i4uBv2OX78uNasWWN1FQAAAIWa5SAVFhamqKioG/b5+uuvFRYWZnUVAAAAhZrlIGWM+dM+GRkZstlsVlcBAABQqLn0HqlDhw6pdOnSrlwFAABAgXHPS+fnnnsuy9fz58/Xr7/+mq2fw+Fw3h/VuXPnWyoQAACgsMpTkLr+niibzaaYmBjFxMTk2Ndms6lFixb65JNPbqU+AACAQitPQSo2NlbStfujatasqYEDB+q1117L1s/NzU1ly5aVr69v/lQJAABQCOUpSFWrVs35/5kzZyokJCRLGwAAQHGSpyB1vd69e+dnHQAAAEWO5SCVacuWLdq6dasuXrwoh8ORbbnNZtPQoUNvdTUAAACFjuUglZCQoIcffljr16+/4TOlCFIAAOBOZTlIRUZGat26dWrfvr169+6typUry939lk9wAQAAFBmWk89PP/2kli1bavny5Ty9HAAAFEuWn2yenJystm3bEqIAAECxZTlIBQcH5/hUcwAAgOLCcpB6//33tWDBAm3atCk/6wEAACgyLN8jFR8fr4iI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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circuitET = QuantumCircuit(3) # deux bits d'entrée, un bit de sortie\n",
    "\n",
    "### AJOUTER ICI CE QU'IL FAUT POUR MODIFIER LE CIRCUIT\n",
    "\n",
    "\n",
    "### ET VOICI LE TEST QUI DOIT RENVOYER TRUE\n",
    "validator(2, circuitET, classicset(2,1, lambda x,y,z: (x,y,x*y)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4bec661f",
   "metadata": {},
   "source": [
    "### Porte OU\n",
    "\n",
    "La porte `OU` teste si l'un des deux bits en entrée est à 1.\n",
    "\n",
    "|x|y|OU(x,y)|\n",
    "| :-: | :-: | :-: |\n",
    "|0|0|0|\n",
    "|0|1|1|\n",
    "|1|0|1|\n",
    "|1|1|1|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "3f1c0e22",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 621.941x367.889 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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MurXr+/YpZ/rrbfeMtatW2fs2LHDmDhxouHj42PMmDHDsf3XX381goODjf379xuGYRijR4/m0N4N9tf5P3bsmCHJePLJJ536de3a1XjiiSec2s6dO2f8+uuvxpo1a4yuXbsazZs3dzp0O2XKFMPf39/w8PAwypQpY0yYMMGQZCxcuNAwDMO4//77jWeffdbpNvft22dIMn766aciHikK4qo1cOnSJaNVq1ZGnz59jC1bthgbN240evToYTRu3Ni4dOlSgfX07t3baNeuXdENEH/LzBr4+uuvjbp16xrnz58v8HaeeeYZo2PHjk63cfHiRUOSERcXl6eOt99+2wgKCirwsJ87cGgPhZaTkyNJevDBBzVkyBCFhYXptdde0wMPPKA5c+Y49e3Vq5d27typNWvW6LbbbtNjjz2my5cvO7aPHDlSd911l8LDwzV8+HC9+uqrmjx5sqQrJyH27NlTY8aM0W233XbjBoirqlSpkjw9PdWoUSOn9oYNG+b5tE5AQIDq1aun9u3b64svvtAvv/yixYsXO7YPHTpU586dU3Jyss6cOeN411q7dm1JUpUqVXTy5Emn28z9Ob/DBLgximoNzJ8/X0eOHFFMTIxatmypO++8U/Pnz1dSUpK+/vrrAu+/devWOnjwYNEPDNfsWtbAypUrdejQIQUGBsrT09Oxl7FHjx669957JRXuOW4YhubNm6fevXs7He4vSQhSkFS0L6R/1bp1a/3+++/KzMzU+fPntW3bNg0aNMjxJHzrrbe0a9cueXp6auXKlS4ZH67O29tbLVu21P79+53af/3116ues2AYhgzDUGZmplO7xWJRaGio/Pz8tGDBAlWrVk3NmzeXJLVp00Zr1651+gRXQkKC6tevrwoVKhThqFAYRbUGLl26JKvV6vRprtyfc9+w5ScxMVG33HLLdY4C1+Na1sBrr72m3bt3KzEx0fFPkqZNm6aYmBhJV57je/bs0alTpxy3kZCQIH9//zyvMWvWrNHBgwc1YMAAF47MtbiyOSQV/QvpnyUmJqpChQry8fGRl5eX9uzZ47R99uzZWrlypb744gvVqlXr+gaCAl24cMHpHX9SUpISExNVsWJFVa9eXcOGDdPjjz+u9u3bKyIiQsuXL9c333yj1atXS5IOHz6szz77TB07dlTlypX1+++/a+LEifLz81OXLl0ctzt58mR1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t0eqWrVqOnPmjPz9/SUV7buY2v/+rlCP580maUIXSaXj3WZBY6r7Run+8MOh8Z1KxDy5au3VGxl/jY/UzevA2I7Ffp4k16091sCVNVDU85SamqqgoCClpaU5Xr8LUqKirLe3t1q2bOmUNiXp119/VY0aNSRJLVq0kJeXl1asWKEePXpIkvbv36/k5GTHXpw2bdpo/PjxOnXqlIKDgyVJCQkJ8vf3V6NGjRx9/vpOICEh4ap7gnx8fOTj45On3cvLS15eXk5tHh4e+R6ey32SXGt7aZZ7aOuvj6105UliteY9BbCg9oLmo6jmKb8aC9teUO2lWe7clIR5cvXaK63+PAclYZ5cufZKqz8/Fq6ep3z7XnPPG+TChQs6ePCg4+ekpCQlJiaqYsWKql69uoYNG6bHH39c7du3V0REhJYvX65vvvlGq1evliQFBARowIABGjp0qCpWrCh/f3+9+OKLatOmje68805JUseOHdWoUSP17t1bkyZNUkpKit544w0NHDjQEYSef/55vfPOO3r11VfVv39/rVy5Up9//rmWLSvdVxMHAAD/X7ELUtu2bVNERITj56FDh0qS+vbtq9jYWD300EOaM2eOJkyYoH/961+qX7++vvzyS7Vr187xO9OmTZPValWPHj2UmZmpqKgozZ4927Hdw8ND3377rV544QW1adNGZcuWVd++ffXWW285+tSqVUvLli3TkCFDNGPGDFWtWlUffvghlz4AAAAOxS5I3XvvvX/7iZT+/furf//+BW739fXVrFmzCryop3TlnKm/HrrLr5adO3devWAAAFBqccIFAACASQQpAAAAkwhSAAAAJhGkAAAATCJIAQAAmESQAgAAMIkgBQAAYBJBCgAAwCSCFAAAgEkEKQAAAJMIUgAAACYRpAAAAEwiSAEAAJhEkAIAADCJIAUAAGASQQoAAMAkghQAAIBJBCkAAACTCFIAAAAmEaQAAABMIkgBAACYRJACAAAwiSAFAABgEkEKAADAJIIUAACASQQpAAAAkwhSAAAAJhGkAAAATCJIAQAAmESQAgAAMIkgBQAAYBJBCgAAwCSCFAAAgEkEKQAAAJMIUgAAACYRpAAAAEwiSAEAAJhEkAIAADCJIAUAAGASQQoAAMAkghQAAIBJBCkAAACTCFIAAAAmEaQAAABMIkgBAACYRJACAAAwiSAFAABgEkEK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69evV2JiotLT0+Xv76+wsDDdddddRXHTAAAAxdZ1BakNGzaoX79+OnjwoKQrJ5jnnjdVr149xcTEqE2bNtdfJQAAQDFkOkjt27dPHTt21KVLl3T//fcrIiJCt9xyi1JSUrRq1SrFx8crKipKmzZtUqNGjYqyZgAAgGLBdJB66623lJWVpbi4OHXq1Mlp2/Dhw7V8+XJ169ZNb731lhYuXHjdhQIAABQ3pk82X716tR555JE8ISpXp06d9Mgjj2jVqlWmiwMAACjOTAeptLQ01apV66p9atWqpbS0NLN3AQAAUKyZDlKhoaHatGnTVfts3rxZoaGhZu8CAACgWDMdpLp166bVq1dr5MiRunz5stO2y5cva/To0Vq1apUefPDB6y4SAACgODJ9svnIkSP17bff6u2339Z7772nVq1aKSQkRCdPntTWrVt1+vRp1a5dWyNHjizKegEAAIoN03ukgoKCtGnTJvXt21cXLlxQXFycYmJiFBcXp/Pnz6tfv37atGmTKlasWJT1ym63a+TIkapVq5b8/PxUp04djR07VoZhOPoYhqFRo0bplltukZ+fnyIjI3XgwAGn20lNTVWvXr3k7++vwMBADRgwQBcuXHDqs3v3bt19993y9fVVtWrVNGnSpCIdCwAAKNmu64KclSpV0rx58/Tee+/pl19+cVzZvEGDBvLy8iqqGp385z//0bvvvquPPvpIjRs31rZt29SvXz8FBAToX//6lyRp0qRJ+t///qePPvpItWrV0siRIxUVFaWffvpJvr6+kqRevXrpxIkTSkhIkM1mU79+/fTss89q/vz5kqT09HR17NhRkZGRmjNnjvbs2aP+/fsrMDBQzz77rEvGBgAASpZCB6nx48fr4sWLGjNmjCMseXl5qWnTpo4+WVlZGjFihMqXL6/XXnut6KrVlaupP/jgg4qOjpYk1axZUwsWLNCWLVskXdkbNX36dL3xxhuO87M+/vhjhYSEaMmSJXriiSf0888/a/ny5dq6davuuOMOSdLMmTPVpUsX/fe//1VoaKg+/fRTZWVlad68efL29lbjxo2VmJioqVOnEqQAAICkQh7a++GHHzRq1CgFBQVddY+Tt7e3goKCNGLEiCK/jlTbtm21YsUK/frrr5KkXbt2ad26dercubMkKSkpSSkpKYqMjHT8TkBAgFq3bq2NGzdKkjZu3KjA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bNmy7i4VLpKRkaERI0ZoyZIlKlOmjFq3bq1u3bopMDBQc+fO1YoVK/Trr7+yBm5i27ZtU9euXVW1alWNHj1aDzzwgNP2X3/9VbfffrtSU1NVpkwZN1UJVzl8+LB69Oih9PR0jRo1Sn379nXavm/fPoWHh+vcuXM39fwTpGDaqVOnFBcXpx9++EG//fab9u/frzNnzujee+/V008/rZ49e7q7RLhI7uUtzp8/r3Xr1mndunXaunWrtm3bpuzsbEVGRmrAgAGKjo52d6lwsYMHD2r48OHatm2bgoKCdNddd6lLly7av3+/FixYoGrVqumLL75wd5lwkfPnz+u1117TwoULlZ2drfvvv1+dOnXS3r17tXr1ajVt2lT/93//5+4yXYoghUI5efKkkpKS5OPjIz8/P9WuXVtWq1WHDh3SpUuXVLZsWVWqVInrCN3E8rtGWFZWlk6fPi0/Pz9dvnxZAQEB7IkqRS5evKgVK1Zo5cqV2rp1q/bs2aOgoCANGDBA//jHP1SzZk13lwgXyP1bcPnyZe3Zs0dr167VypUrtX37dtWuXVu9evXSww8/rFtuucXdpboUQQrX7IMPPlBMTIx27NghT09P1a9fXw0bNtR9992nbt26KSgoyN0l4gYyDEN2u10eHh439fkPyF9cXJzOnj0ru92uatWqqVWrVipbtqwuXbokDw8PnT9/nksflDJ2u11Wq1UWi0VpaWml5hxJghSuyR9//KF69epp4MCBeuaZZ5Senq64uDitWLFCBw4cUJMmTTRjxgzVqlWLC/DdpM6ePavmzZurR48e6tevnxo3buzYZrfbZbFYZLVaHefNlS9f3o3VwlXOnz+v559/XgkJCcrOztYtt9yismXLKigoSB07dtSjjz6qqlWrSsp/7yVKtuzsbKWmpio4ONjdpRQbrHBck08//VS33Xabxo4dq+rVq6tJkyZ69dVX9f3332vu3LlKSUnRAw88oHPnzhGiblL/93//p99++00JCQlq2rSpGjVqpMmTJ+vkyZPy8PCQ1WrV77//rp49e+r06dPuLhcu8r///U979uzRl19+qdTUVH322WcaMGCAgoKCFBsbq6FDhyotLU0Sn9y9Gb3zzjuqX7++XnzxRf3444+6dOlSnj7p6en67rvvZLPZ3FDhjccqxzXx8vLShQsX9Msvv0iSLl++rKysLElSRESE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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circuitOU = QuantumCircuit(3) # deux bits d'entrée, un bit de sortie\n",
    "\n",
    "### AJOUTER ICI CE QU'IL FAUT POUR MODIFIER LE CIRCUIT\n",
    "\n",
    "\n",
    "\n",
    "### ET VOICI LE TEST QUI DOIT RENVOYER TRUE\n",
    "validator(2, circuitOU, classicset(2,1, lambda x,y,z: (x,y,max(x,y))))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e5affb66",
   "metadata": {},
   "source": [
    "### Porte XOR\n",
    "\n",
    "La porte `XOR` teste si exactement un deux bits en entrée est à 1.\n",
    "\n",
    "|x|y|XOR(x,y)|\n",
    "| :-: | :-: | :-: |\n",
    "|0|0|0|\n",
    "|0|1|1|\n",
    "|1|0|1|\n",
    "|1|1|0|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "bcc7986f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 621.941x367.889 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAGtCAYAAADd85oiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABClklEQVR4nO3deVyU5f7/8ffMAIIoKCgquWGZqJmi5lZpmEdU0jTrlHrKo5bl0VPmyaxMy8wsW8zKvq1CndSW09EWOS655r6SuGQuJGrihoKmwjBcvz98ML9GwOCWEZDX8/Hw8ZDrvpj53Pd1DfOee665x2aMMQIAAECR2Uu6AAAAgLKKIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABY5FPSBVzNcnJy9Ntvv6ly5cqy2WwlXQ4AACgEY4xOnz6t8PBw2e2XPudEkPKi3377TXXq1CnpMgAAgAUHDhxQ7dq1L9mHIOVFlStXlnRhIIKCgkq4GgAAUBgZGRmqU6eO+3n8UghSXpT7dl5QUBBBCgCAMqYwy3JYbA4AAGARQQoAyokVK1aoZ8+eCg8Pl81m09y5c/P02blzp3r16qXg4GAFBgbqpptuUkpKSp5+xhh17949z+389NNP6tevn+rUqaOAgAA1btxY06ZN8/jdlStX6uabb1ZoaKgCAgIUGRmpqVOnFvfuIh/FMQcefvhhXXvttQoICFD16tV155136ueff/a4jcWLF6tDhw6qXLmyatasqTFjxig7O9ujz4IFC9SuXTtVrlxZ1atXV9++ffXrr796Y7e9iiBVjlyJB1B8fLxsNlu+/44ePeruN3PmTDVv3lwVK1ZUrVq1NHjwYJ04ccKr+w+Ud7///ruaN2+u6dOn57t97969uuWWWxQZGally5Zp69atGjdunPz9/fP0ffPNN/N922PTpk0KCwvTZ599pu3bt2vs2LF6+umn9c4777j7BAYGasSIEVqxYoV27typZ599Vs8++6w++OCD4ttZ5Ks45kCrVq0UFxennTt3asGCBTLGqGvXrnK5XJIuhOkePXqoW7du2rJli7744gt9++23euqpp9y3kZycrDvvvFOdO3dWYmKiFixYoOPHj+uuu+7y7gHwBgOvSU9PN5JMenp6SZdijDEmISHBjB071vz3v/81ksycOXM8tu/Zs8eEhISY0aNHm82bN5s9e/aYb775xhw5csTd5/333zfLly83ycnJZtOmTaZnz56mTp06Jjs72xhjzNmzZ83hw4c9/sXExJhOnTq5b2PlypXGbrebadOmmX379pkff/zRNG3a1PTp0+dKHIZya/ny5eaOO+4wtWrVynf8jTFmx44dpmfPniYoKMhUrFjRtG7d2uzfv9+9fejQoaZBgwbG39/fVKtWzfTq1cvs3LnTvf348eMmJibG1KpVy/j5+ZnatWub4cOHezwGBg4caCTl+dekSROv7j885TcH7r33XvO3v/3tT393y5Yt5pprrjGHDx8ucC790T/+8Q8THR19yT59+vQp1H2j+FzOHPijn376yUgye/bsMcYY8/TTT5vWrVt79Pn222+Nv7+/ycjIMMYY89VXXxkfHx/jcrk8+thsNpOVlWVhb4pXUZ6/OSNVjnTv3l0vvvii+vTpk+/2sWPHqkePHpoyZYqioqJ07bXXqlevXgoLC3P3GTp0qDp27Kj69eurZcuWevHFF3XgwAH36diAgADVrFnT/c/hcGjJkiUaMmSI+zbWrFmj+vXr69FHH1VERIRuueUWPfzww1q/fr1X97+8uxKvRO12u+688059++23+uWXXxQfH68ffvhBjzzyiPs2pk2bpsOHD7v/HThwQCEhIbrnnnu8ewBwSTk5OZo3b56uv/56xcTEKCwsTG3bts1z5vrs2bPq37+/pk+frpo1axbqttPT0xUSElLg9i1btmj16tXq1KnT5ewCLlNh58Af/f7774qLi1NERIT7cj+ZmZl5zmIGBATo/Pnz2rRpk6QLf0vsdrvi4uLkcrmUnp6uf//73+rSpYt8fX29to9e4f1cV36VtjNSf6SLXom4XC5TqVIl88ILL5iuXbua6tWrmzZt2lzyleaZM2fMyJEjTUREhMnMzMy3z2uvvWaCg4PN2bNn3W0rV640vr6+Zt68eSYnJ8ekpqaajh07moceeqi4dg9/4uLxN6Z4XonmZ9q0aaZ27doFbp8zZ46x2Wzm119/LdJ94/JcPAdyzy5VrFjRvPHGG2bLli1m8uTJxmazmWXLlrn7DR061AwZMqTA27nYqlWrjI+Pj1mwYEGebddcc43x8/MzdrvdvPDCC8WyXyg8q3PAGGOmT59uAgMDjSTTqFEjj78BCxYsMHa73cyaNctkZ2ebgwcPmltvvdVIMrNmzXL3W7ZsmQkLCzMOh8NIMu3btzcnT5709m4XSlGevwlSXlSWglRxPYAu1rhxYzNs2LA87V9++aWpVKmS8fHxMZJMz549S8Xp3PLiSgXpQ4cOmU6dOpkBAwYUeDt33HGH+ctf/mJ1V2DRxXPg0KFDRpLp16+fR7+ePXua++67zxhjzDfffGOuu+46c/r06QJv54+SkpJMtWrVzMSJE/Pdvm/fPrN161bzwQcfmJCQEI8nWXiflTmQ69SpU+aXX34xy5cvNz179jQtW7Y0586dc29//fXXTVBQkHE4HKZixYpm8uTJRpL5/PPPjTEXnnMaNmzoXkqyfPly06lTJ3P77bebnJwc7+10IRGkSomyFKSK8wGUa/Xq1UaS2bhxo0f79u3bTa1atcyUKVPMTz/9ZObPn2+aNWtmBg8eXHw7iEvydpC+7777TEBAgDsk5zc/jLkw7xwOh/niiy+Kdf/w5y6eA5mZmcbHxydP6HnyySdNhw4djDHGPPbYY8ZmsxmHw+H+J8nY7XaPdZDGXHich4WFmWeeeaZQ9UycONFcf/31l7VPKBorcyA/mZmZpmLFinmCcE5Ojjl06JA5e/as2bFjh5Fk1q9fb4wx5tlnn82zjurAgQNGklmzZs1l7tnlY40UiqxatWry8fFRkyZNPNobN26c56PPwcHBatiwoTp27Kj//Oc/+vnnnzVnzpw8t/nRRx+pRYsWatWqlUf75MmTdfPNN2v06NG68cYbFRMTo3fffVczZszQ4cOHi3/n8KdycnIkSXfeeacef/xxtWjRQk899ZTuuOMOvffeex59BwwYoC1btmj58uW6/vrr9de//lXnz5/36DN16lRt3rxZ33zzjfbu3atRo0ble7+ffPKJqlSpot69e3tlv1B4fn5+uummm7Rr1y6P9l9++UX16tWTJD311FPaunWrEhMT3f+kC+MdFxfn/p3t27crOjpaAwcO1KRJkwp1/zk5OcrMzCyenYElhZkD+TEXTsrkGT+bzabw8HAFBARo9uzZqlOnjlq2bCnpwlq7i7/DzuFwSPr/f4/KCq5sDknF/wA6c+aMvvzyS02ePDnP75w9e1Y+Pp5TL/cBZIyxugu4DJcK0itXrvRoCw4Odofpdu3aqWrVqpozZ4769evn7pP7YYPIyEiFhITo1ltv1bhx41SrVi13H2OMZsyYofvvv19+fn7e3UFIuvC43LNnj/vn5ORkJSYmKiQkRHXr1tXo0aN17733qmPHjoqOjtb8+fP13XffadmyZZL+/7herG7duoqIiJAkbdu2TZ07d1ZMTIxGjRql1NRUSRce49WrV5ckTZ8+XXXr1lVkZKSkC5dmee211/Too496c/ehy58D+/bt0xdffKGuXbuqevXqOnjwoF5++WUFBASoR48e7tt99dVX1a1bN9ntdv33v//Vyy+/rC+//NL9tz42NlZTp07VCy+8oH79+un06dN65plnVK9ePUVFRV3RY3LZvHpurJwrbW/tnT592mzZssVs2bLFSHK/hZP78fb//ve/xtfX13zwwQdm9+7d5u233zYOh8P8+OOPxhhj9u7da1566SWzceNGs3//frNq1SrTs2dPExIS4nGJBGOM+eijj4y/v3++Cwfj4uKMj4+Peffdd83evXvNypUrTevWrU2bNm28fgxwgfJZ19K+ffs8i8179+6d5+3ePzp//rwJCAgwcXFxBfZZvny5kWSSk5M92pcuXWokmaSkpKKWD4tyj/nF/wYOHOju8/HHH5vrrrvO+Pv7m+bNm5u5c+de8jYvnkvPPfdcvvdRr149d5+33nrLNG3a1FSsWNEEBQWZqKgo8+6773p8FB7ecblz4NChQ6Z79+4mLCzM+Pr6mtq1a5v+/fubn3/+2eN+oqOjTXBwsPH39zdt27Y1CQkJeWqZPXu2iYqKMoGBgaZ69ep5LqdSklgjVUqUtiB1pR5Axlx4Uu7fv3+Btbz11lumSZMmJiAgwNSqVcsMGDDAHDx4sFj3F56uRJCeN2+emTFjhklKSjLJycnm+++/N40bNzY333xznnr+9re/mbZt2165AwAAhUSQKiVKW5BC+XYlgvSSJUtM+/bt3a9EGzZsaMaMGZPnzOSpU6dMQECA+eCDD7y92wBQZEV5/rYZw6IUb8nIyFBwcLDS09MVFBRU0uUAAIBCKMrzN5/aAwAAsIggBQAAYBFBCgAAwCKCFAAAgEUEKQAAAIsIUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwyKekCwAAWFP/qXklXUKJ+/Xl2JIuoUQxB0p+DhCkyrDy/gAq6QdPacAcYA4AKFm8tQcAAGARQQoAAMCiUhekVqxYoZ49eyo8PFw2m01z587N02fnzp3q1auXgoODFRgYqJtuukkpKSnu7efPn9fw4cMVGhqqSpUqqW/fvjpy5IjHbaSkpCg2NlYVK1ZUWFiYRo8erezsbI8+y5YtU8uWLVWhQgVdd911io+P98YuAwCAMqrUBanff/9dzZs31/Tp0/PdvnfvXt1yyy2KjIzUsmXLtHXrVo0bN07+/v7uPo8//ri+++47ffXVV1q+fLl+++033XXXXe7tLpdLsbGxysrK0urVq/XJJ58oPj5e48ePd/dJTk5WbGysoqOjlZiYqJEjR+rBBx/UggULvLfzAACgTCl1i827d++u7t27F7h97Nix6tGjh6ZMmeJuu/baa93/T09P18cff6xZs2apc+fOkqS4uDg1btxYa9euVbt27bRw4ULt2LFDP/zwg2rUqKEWLVpo4sSJGjNmjJ5//nn5+fnpvffeU0REhF5//XVJUuPGjbVy5UpNnTpVMTExXtp7AABQlpS6IHUpOTk5mjdvnp588knFxMRoy5YtioiI0NNPP63evXtLkjZt2iSn06kuXbq4fy8yMlJ169bVmjVr1K5dO61Zs0bNmjVTjRo13H1iYmI0bNgwbd++XVFRUVqzZo3HbeT2GTlyZIH1ZWZmKjMz0/1zRkaGJMnpdMrpdEqS7Ha7HA6HXC6XcnJy3H1z27Ozs2WMcbc7HA7Z7fZ828u73ONx8Vuyvr6+ysnJkcvlcrfZbDb5+PgU2F7QeBTHONntdvf45/Lx8cm39oLaC9qn8s7lcpWJcfLm3CvvnE5nmRgnb8+98szpdHplnAqrTAWpo0eP6syZM3r55Zf14osv6pVXXtH8+fN11113aenSperUqZNSU1Pl5+enKlWqePxujRo1lJqaKklKTU31CFG523O3XapPRkaGzp07p4CAgDz1TZ48WRMmTMjTvnDhQlWsWFGSVLduXUVFRWnr1q0e67oaNWqkyMhIrV+/XseOHXO3t2jRQvXq1dOKFSt0+vRpd3v79u3/9Hhd7bKzs3Xu3DktXbrU3ebj46PY2FgdP35ca9ascbdXrlxZnTt31oEDB5SYmOhur169ujp06KDdu3dr165d7vbiHKewsDAtXLjQ44EZHR2tgIAAJSQkeOxTjx49irRP5d3WrVvLxDh5b+6VqT/hXpGQkFAGxsmbc485kJCQUOzjtGrVqkLfv82U4pc2NptNc+bMcZ9t+u2333TNNdeoX79+mjVrlrtfr169FBgYqNmzZ2vWrFkaNGiQx5khSWrTpo2io6P1yiuvaOjQodq/f7/HeqezZ88qMDBQCQkJ6t69u66//noNGjRITz/9tLtPQkKCYmNjdfbs2XyDVH5npOrUqaPjx48rKChIUvG+imnwzP+KekivKsmTe0gqH682C9qn654t32v29k7qVibGyVtzr+G4hYU8Ulev3RO7lvpxkrw395gDF+ZAcY9TWlqaQkNDlZ6e7n7+LkiZirLVqlWTj4+PmjRp4tGeu35JkmrWrKmsrCydOnXK46zUkSNHVLNmTXef9evXe9xG7qf6/tjn4k/6HTlyREFBQfmGKEmqUKGCKlSokKfd19dXvr6+Hm0OhyPft+dyHySFbS/Pct/auvjYShceJHZ73s9SFNRe0HgU1zjlV2NR2wuqvTzLHZuyME7ennvl1R/HoCyMkzfnXnn1x2Ph7XHKT5n6q+zn56ebbrrJ47SdJP3yyy+qV6+eJKlVq1by9fXV4sWL3dt37dqllJQU99th7du3V1JSko4ePerus2jRIgUFBblDWvv27T1uI7cPb6kBAIBcpe6lzZkzZ7Rnzx73z8nJyUpMTFRISIjq1q2r0aNH695771XHjh0VHR2t+fPn67vvvtOyZcskScHBwRoyZIhGjRqlkJAQBQUF6Z///Kfat2+vdu3aSZK6du2qJk2a6P7779eUKVOUmpqqZ599VsOHD3efUXrkkUf0zjvv6Mknn9TgwYO1ZMkSffnll5o3r3x/JQcAAPj/Sl2Q2rhxo6Kjo90/jxo1SpI0cOBAxcfHq0+fPnrvvfc0efJkPfroo2rUqJG+/vpr3XLLLe7fmTp1qux2u/r27avMzEzFxMTo3XffdW93OBz6/vvvNWzYMLVv316BgYEaOHCgXnjhBXefiIgIzZs3T48//rimTZum2rVr66OPPuLSBwAAwK3UBanbbrvtTz/aO3jwYA0ePLjA7f7+/po+fXqBF/WUpHr16uX5NER+tWzZsuXSBQMAgHKrTK2RAgAAKE0IUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEUEKQAAAIsIUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEUEKQAAAIsIUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwKJSF6RWrFihnj17Kjw8XDabTXPnznVvczqdGjNmjJo1a6bAwECFh4frgQce0G+//eZxG2lpaRowYICCgoJUpUoVDRkyRGfOnPHos3XrVt16663y9/dXnTp1NGXKlDy1fPXVV4qMjJS/v7+aNWumhIQEr+wzAAAom0pdkPr999/VvHlzTZ8+Pc+2s2fPavPmzRo3bpw2b96s//73v9q1a5d69erl0W/AgAHavn27Fi1apO+//14rVqzQ0KFD3dszMjLUtWtX1atXT5s2bdKrr76q559/Xh988IG7z+rVq9WvXz8NGTJEW7ZsUe/evdW7d29t27bNezsPAADKFJ+SLuBi3bt3V/fu3fPdFhwcrEWLFnm0vfPOO2rTpo1SUlJUt25d7dy5U/Pnz9eGDRvUunVrSdLbb7+tHj166LXXXlN4eLhmzpyprKwszZgxQ35+fmratKkSExP1xhtvuAPXtGnT1K1bN40ePVqSNHHiRC1atEjvvPOO3nvvPS8eAQAAUFaUuiBVVOnp6bLZbKpSpYokac2aNapSpYo7RElSly5dZLfbtW7dOvXp00dr1qxRx44d5efn5+4TExOjV155RSdPnlTVqlW1Zs0ajRo1yuO+YmJiPN5qvFhmZqYyMzPdP2dkZEi68Jak0+mUJNntdjkcDrlcLuXk5Lj75rZnZ2fLGONudzgcstvt+baXd7nHIzs726Pd19dXOTk5crlc7jabzSYfH58C2wsaj+IYJ7vd7h7/XD4+PvnWXlB7QftU3rlcrjIxTt6ce+Wd0+ksE+Pk7blXnjmdTq+MU2GV6SB1/vx5jRkzRv369VNQUJAkKTU1VWFhYR79fHx8FBISotTUVHefiIgIjz41atRwb6tatapSU1PdbX/sk3sb+Zk8ebImTJiQp33hwoWqWLGiJKlu3bqKiorS1q1blZKS4u7TqFEjRUZGav369Tp27Ji7vUWLFqpXr55WrFih06dPu9vbt29f8IEpJ7Kzs3Xu3DktXbrU3ebj46PY2FgdP35ca9ascbdXrlxZnTt31oEDB5SYmOhur169ujp06KDdu3dr165d7vbiHKewsDAtXLjQ44EZHR2tgICAPOvuevToUaR9Ku+2bt1aJsbJe3OvTP8JLxYJCQllYJy8OfeYAwkJCcU+TqtWrSr0/dtMKX5pY7PZNGfOHPXu3TvPNqfTqb59++rgwYNatmyZO0i99NJL+uSTTzwOpCSFhYVpwoQJGjZsmLp27aqIiAi9//777u07duxQ06ZNtWPHDjVu3Fh+fn765JNP1K9fP3efd999VxMmTNCRI0fyrTe/M1J16tTR8ePH3fUV56uYBs/8rzCH8aqVPLmHpPLxarOgfbru2QWXOkRXvb2TupWJcfLW3Gs4bmEhj9TVa/fErqV+nCTvzT3mwIU5UNzjlJaWptDQUKWnp7ufvwtSJqOs0+nUX//6V+3fv19Llizx2MmaNWvq6NGjHv2zs7OVlpammjVruvtcHIZyf/6zPrnb81OhQgVVqFAhT7uvr698fX092hwOR75vz+U+SArbXp7lvrV18bGVLjxI7Pa8n6UoqL2g8SiuccqvxqK2F1R7eZY7NmVhnLw998qrP45BWRgnb8698uqPx8Lb45SfMvdXOTdE7d69Wz/88INCQ0M9trdv316nTp3Spk2b3G1LlixRTk6O2rZt6+6zYsUKj1cAixYtUqNGjVS1alV3n8WLF3vc9qJFi3hLDQAAuJW6IHXmzBklJia636NOTk5WYmKiUlJS5HQ6dffdd2vjxo2aOXOmXC6XUlNTlZqaqqysLElS48aN1a1bNz300ENav369Vq1apREjRui+++5TeHi4JKl///7y8/PTkCFDtH37dn3xxReaNm2ax+Lyxx57TPPnz9frr7+un3/+Wc8//7w2btyoESNGXPFjAgAASqdSF6Q2btyoqKgoRUVFSZJGjRqlqKgojR8/XocOHdK3336rgwcPqkWLFqpVq5b73+rVq923MXPmTEVGRur2229Xjx49dMstt3hcIyo4OFgLFy5UcnKyWrVqpX/9618aP368x7WmOnTooFmzZumDDz5Q8+bN9Z///Edz587VDTfccOUOBgAAKNVK3Zvtt9122yU/2luYtfEhISGaNWvWJfvceOON+vHHHy/Z55577tE999zzp/cHAADKp1J3RgoAAKCsIEgBAABYRJACAACwiCAFAABgEUEKAADAIoIUAACARQQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEUEKQAAAIsIUgAAABYRpAAAACwiSAEAAFhEkAIAALCIIAUAAGARQQoAAMAighQAAIBFBCkAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABgkeUgtWLFCqWkpFyyz4EDB7RixQqrdwEAAFCqWQ5S0dHRio+Pv2SfTz/9VNHR0VbvAgAAoFSzHKSMMX/aJycnRzabzepdAAAAlGpeXSO1e/duBQcHe/MuAAAASoxPUToPHjzY4+e5c+fq119/zdPP5XK510d17979sgoEAAAorYoUpP64JspmsykxMVGJiYn59rXZbLrppps0derUy6kPAACg1CpSkEpOTpZ0YX1UgwYNNHLkSD322GN5+jkcDlWtWlWBgYHFUyUAAEApVKQgVa9ePff/4+LiFBUV5dEGAABQnhQpSP3RwIEDi7MOAACAMsdykMq1fv16bdiwQadOnZLL5cqz3Wazady4cZd7NwAAAKWO5SCVlpam3r17a9WqVZe8phRBCgAAXK0sB6lRo0Zp5cqVuu222zRw4EDVrl1bPj6XfYILAACgzLCcfL7//nu1adNGixcv5urlAACgXLJ8ZfNz586pY8eOhCgAAFBuWQ5SLVq0yPeq5gAAAOWF5SD13HPP6dtvv9XatWuLsx4AAIAyw/IaqdTUVMXGxqpTp04aMGCAWrZsqaCgoHz7PvDAA5YLBAAAKK0sB6m///3vstlsMsYoPj5e8fHxedZLGWNks9kIUgAA4KpkOUjFxcUVZx0AAABlDl8RAwAAYJHlxeYAAADlneUzUikpKYXuW7duXat3AwAAUGpZDlL169cv1MU4bTabsrOzrd4NAABAqWU5SD3wwAP5Bqn09HT99NNPSk5OVqdOnVS/fv3LqQ8AAKDUshyk4uPjC9xmjNHrr7+uKVOm6OOPP7Z6FwAAAKWaVxab22w2PfHEE2ratKlGjx7tjbsAAAAocV791F7r1q21ZMkSb94FAABAifFqkNq7dy8LzQEAwFXL8hqpguTk5OjQoUOKj4/XN998o9tvv7247wIAAKBUsByk7Hb7JS9/YIxR1apV9frrr1u9CwAAgFLNcpDq2LFjvkHKbreratWquummmzRo0CCFhYVdVoEAAAClleUgtWzZsmIsAwAAoOzhu/YAAAAsKpbF5qtWrVJiYqIyMjIUFBSkFi1a6Oabby6OmwYAACi1LitIrV69WoMGDdKePXskXVhgnrtuqmHDhoqLi1P79u0vv0oAAIBSyHKQ2r59u7p27aqzZ8/qL3/5i6Kjo1WrVi2lpqZq6dKlWrhwoWJiYrR27Vo1adKkOGsGAAAoFSwHqRdeeEFZWVlKSEhQt27dPLaNGTNG8+fPV69evfTCCy/o888/v+xCAQAAShvLi82XLVumu+++O0+IytWtWzfdfffdWrp0qeXiAAAASjPLQSo9PV0RERGX7BMREaH09HSrdwEAAFCqWQ5S4eHhWrt27SX7rFu3TuHh4VbvAgAAoFSzHKR69eqlZcuWady4cTp//rzHtvPnz+u5557T0qVLdeedd152kQAAAKWR5cXm48aN0/fff6+XXnpJ77//vtq0aaMaNWroyJEj2rBhg44dO6YGDRpo3LhxxVkvAABAqWH5jFRoaKjWrl2rgQMH6syZM0pISFBcXJwSEhJ0+vRpDRo0SGvXrlVISEhx1iuXy6Vx48YpIiJCAQEBuvbaazVx4kQZY9x9jDEaP368atWqpYCAAHXp0kW7d+/2uJ20tDQNGDBAQUFBqlKlioYMGaIzZ8549Nm6datuvfVW+fv7q06dOpoyZUqx7gsAACjbLuuCnNWqVdOMGTP0/vvv6+eff3Zf2TwyMlK+vr7FVaOHV155Rf/3f/+nTz75RE2bNtXGjRs1aNAgBQcH69FHH5UkTZkyRW+99ZY++eQTRUREaNy4cYqJidGOHTvk7+8vSRowYIAOHz6sRYsWyel0atCgQRo6dKhmzZolScrIyFDXrl3VpUsXvffee0pKStLgwYNVpUoVDR061Cv7BgAAypYiB6lJkybp999/14QJE9xhydfXV82aNXP3ycrK0tixY1W5cmU99dRTxVetLlxN/c4771RsbKwkqX79+po9e7bWr18v6cLZqDfffFPPPvuse33Wp59+qho1amju3Lm67777tHPnTs2fP18bNmxQ69atJUlvv/22evTooddee03h4eGaOXOmsrKyNGPGDPn5+alp06ZKTEzUG2+8QZACAACSivjW3g8//KDx48crNDT0kmec/Pz8FBoaqrFjxxb7daQ6dOigxYsX65dffpEk/fTTT1q5cqW6d+8uSUpOTlZqaqq6dOni/p3g4GC1bdtWa9askSStWbNGVapUcYcoSerSpYvsdrvWrVvn7tOxY0f5+fm5+8TExGjXrl06efJkse4TAAAom4p0RurTTz9V1apVNWLEiD/tO3z4cE2ePFlxcXGKjo62XODFnnrqKWVkZCgyMlIOh0Mul0uTJk3SgAEDJEmpqamSpBo1anj8Xo0aNdzbUlNTFRYW5rHdx8dHISEhHn0uvk5W7m2mpqaqatWqeWrLzMxUZmam++eMjAxJktPplNPplCTZ7XZ33Tk5Oe6+ue3Z2dke670cDofsdnu+7eVd7vHIzs72aPf19VVOTo5cLpe7zWazycfHp8D2gsajOMbJbre7xz+Xj49PvrUX1F7QPpV3LperTIyTN+deeed0OsvEOHl77pVnTqfTK+NUWEUKUqtXr1aXLl1UoUKFP+1boUIFdenSRatWrSrKXfypL7/8UjNnztSsWbPcb7eNHDlS4eHhGjhwYLHeV1FNnjxZEyZMyNO+cOFCVaxYUZJUt25dRUVFaevWrUpJSXH3adSokSIjI7V+/XodO3bM3d6iRQvVq1dPK1as0OnTp93tfBn0hT8k586d8zjr6ePjo9jYWB0/ftx9BlKSKleurM6dO+vAgQNKTEx0t1evXl0dOnTQ7t27tWvXLnd7cY5TWFiYFi5c6PHAjI6OVkBAgBISEjz2qUePHkXap/Ju69atZWKcvDf3LmuZ61UhISGhDIyTN+cecyAhIaHYx6ko2cVmivDSpmLFiho5cqReeumlQvV/5pln9Oabb+rs2bOFLujP1KlTR0899ZSGDx/ubnvxxRf12Wef6eeff9a+fft07bXXasuWLWrRooW7T6dOndSiRQtNmzZNM2bM0L/+9S+Pt+iys7Pl7++vr776Sn369NEDDzygjIwMzZ07191n6dKl6ty5s9LS0gp9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zjIxTt6ee+WZ0+n0yjgVVpkLUgcOHNBjjz2mRYsWyd/fv6TL8TB58mRNmDAhT/vChQtVsWJFSVLdunUVFRWlrVu3KiUlxd2nUaNGioyM1Pr163Xs2DF3e4sWLVSvXj2tWLFCp0+fdre3b9/ei3tSNmRnZ+vcuXNaunSpu83Hx0exsbE6fvy4x9nDypUrq3Pnzjpw4IASExPd7dWrV1eHDh20e/du7dq1y91enOMUFhamhQsXejwwo6OjFRAQoISEBI996tGjR5H2qbzbunVrmRgn7829MvcnvNglJCSUgXHy5txjDiQkJBT7OK1atarQ928zZeylzdy5c9WnTx+PMzIul0s2m012u10LFixQly5ddPLkSY+zUvXq1dPIkSP1+OOPa/z48fr22289HizJyclq0KCBNm/erKioKHXs2FEtW7bUm2++6e4TFxenkSNHKj09Pd/a8jsjVadOHR0/flxBQUGSivdVTINn/lfk43c1SZ7cQ1L5eLVZ0D5d92z5/vDD3kndysQ4eWvuNRy3sJBH6uq1e2LXUj9OkvfmHnPgwhwo7nFKS0tTaGio0tPT3c/fBSlzUfb2229XUlKSR9ugQYMUGRmpMWPGqE6dOvL19dXixYvVt29fSdKuXbuUkpLiPovTvn17TZo0SUePHlVYWJgkadGiRQoKClKTJk3cfS5+JbBo0aJLngmqUKGCKlSokKfd19dXvr6+Hm0OhyPft+dyHySFbS/Pct/auvjYShceJHZ73iWABbUXNB7FNU751VjU9oJqL89yx6YsjJO351559ccxKAvj5M25V1798Vh4e5zy7VvonqVE5cqVdcMNN3i0BQYGKjQ01N0+ZMgQjRo1SiEhIQoKCtI///lPtW/fXu3atZMkde3aVU2aNNH999+vKVOmKDU1Vc8++6yGDx/uDkKPPPKI3nnnHT355JMaPHiwlixZoi+//FLz5s27sjsMAABKrTIXpApj6tSpstvt6tu3rzIzMxUTE6N3333Xvd3hcOj777/XsGHD1L59ewUGBmrgwIF64YUX3H0iIiI0b948Pf7445o2bZpq166tjz76SDExMSWxSwAAoBS6KoLUsmXLPH729/fX9OnTNX369AJ/p169enneurvYbbfdpi1bthRHiQAA4CrEggsAAACLCFIAAAAWEaQAAAAsIkgBAABYRJACAACwiCAFAABg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oaHq2rWr7rnnHtWuXVtS/mcvUbZlZ2crLS1NYWFhJV1KqcEMR6HMnDlT119/vSZOnKi6devqhhtu0JNPPqkFCxbo448/Vmpqqu644w6dOnWKEHWV+ve//639+/dr0aJFatasmZo0aaJXX31VR44ckcPhkN1u18GDB9W/f38dO3aspMuFl7z11ltKSkrS119/rbS0NH3xxRcaMmSIQkNDFR8fr1GjRik9PV0Sn9y9Gr3zzjtq1KiR/vnPf+rHH3/U2bNn8/TJyMjQ//73PzmdzhKo8MpjlqNQfH19debMGf3888+SpPPnzysrK0uSFB0drU8//VTZ2dlatGhRSZYJL9q6daseeughfffdd1q5cqW6dOmit99+W+Hh4brtttv0+eef6+uvv9Yvv/yiBg0alHS58JL//e9/GjJkiG699VZJ0g033KCHH35Yn376qV599VWtW7dOf//730u2SHjN7Nmz1aRJE61bt0633XabWrVqpeeff17btm2Ty+WSdOGF94QJE+Tr61vC1V4ZBCkUyj333CO73a63335b58+fl7+/v/z8/Nzf+B0ZGanQ0FDt37+/hCuFN2RmZqpp06aqX7++6tatqw4dOmjq1Klat26dvv76a9WsWVP//Oc/9fjjj2vMmDElXS68xOl0qmnTppozZ45OnDgh6cJbPblrY7p27arp06drz5492rZtWwlXi+J27Ngx+fn5adiwYVq/fr22bdumPn36KD4+Xi1atFCnTp303nvv6d1331Xbtm1LutwrhjVS+FM5OTmy2WyaM2eOHnvsMWVkZOjee+/VsGHDFBUVpcOHD2vZsmUaOnSokpKS+ITOVSozM1MnTpxQeHh4nrUvTqdTP/zwg2JjY3XgwAFdc801JVgpvGnt2rW6//77dd9992nkyJF5PmRy8OBBRUZGateuXcyDq8zhw4f1+eefq2nTpuratau73eVyafXq1ZoxY4bmzJmjjIwMpaSkuNfKXe0IUii0zMxM7d27V8uXL9c333yjlStXymaz6ZprrpHT6dSAAQP0wgsvlHSZ8KLDhw/Lz88v309oTpw4UXFxcdq3b18JVIYrwRij7OxsxcXF6ZlnnpHL5dJf//pX9evXT/Xq1VNiYqK+/fZbJSUlaePGjSVdLrwg92ugAgIC8v1g0RNPPKElS5Zo8+bNJVFeiSBI4ZKOHz+uL774Qq+++qpCQ0MVEhKiqlWrqk2bNoqKitLZs2e1b98+de/eXQ0bNmSh+VUodw689tprql69uoKCghQeHq5evXopNjZWAQEBysnJ0UcffaTw8PA8V7fG1enUqVOKj4/XrFmzlJiYqODgYPn7+6tly5Z6+umn1a5du5IuEVfY+fPn1aJFCw0aNKhcvcVPkMIlDR48WD/99JO6d++uSpUq6cSJE9qzZ48OHTqkevXqacKECWrSpElJlwkv+uMcqFy5sk6cOKGdO3fqwIEDatiwoUaNGqX27duXdJnwsnPnzrm/SzGXMUbnzp3TmTNnlJSUpEqVKpWrtTHlSX7jn1+fL7/8Uv369XN/92p5QJBCgYwxqlSpkhISEtxfVGyM0Z49e/Tjjz/qo48+Ulpamv7zn//ohhtuKOFq4Q0FzYG9e/fqxx9/1Icffqj09HR9+eWXHteVwtXnX//6l26++Wa1atVKNWvWVIUKFfL0OXnypKpWrcq15K5ChRn/U6dOqUqVKle+uBLGp/ZQoB07dqhBgwYeX/Vhs9nUsGFDDR48WIsXL1aFChX4Hq2rWEFz4LrrrtOgQYO0ePFi+fj46KuvvirBKuFts2bN0tSpU3XfffcpOjpaTz/9tJYuXaojR464rxWUkZGhQYMGKSkpiRB1lSlo/I8ePars7GxJF74m6IEHHiiXn9bkjBQKdO7cOd1xxx3Kzs5WfHy86tevn+cP5BtvvKFZs2axsPQqxRyAJD344IPy8/PTE088odmzZ+ujjz7S/v37FRUVpXvuuUcxMTFKTEzU0KFDy81FGMsTxv/SOCOFAgUEBOjFF19URkaG7r//fs2aNUuHDx92f2ojMzNTa9euVaNGjUq4UngLcwDZ2dlq0KCBqlSpogYNGmjs2LFKTk5WYmKiWrdurZdfflkdO3bUww8/rPvvv7+ky0UxY/z/HGek8KeSkpI0ceJEfffdd6pUqZJuueUW1axZUwsWLFC1atX00Ucf6cYbbyzpMuFFzIHy7dSpUzpy5IgaNWqkrKws+fr6epyZnDlzpu6//35t2bJFzZs3L8FK4Q2M/6URpFBoR48e1ffff6+5c+cqICBAN9xwg+6++241bty4pEvDFcIcQK6cnBwZY+RwOPThhx/qsccey/d713B1Yvz/P4IULOFb3cEcQK433nhDLpdLo0ePLulSUALK+/gTpAAAl8XpdMrhcBCsy6nyPv4EKQAAAIvKZ3wEAAAoBgQpAAAAiwhSAAAAFhGkAAAALCJIAQAAWESQAgAAsIggBQAAYBFBCgAAwCKCFAAAgEX/D+YKKjsqnYB1AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circuitXOR = QuantumCircuit(3) # deux bits d'entrée, un bit de sortie\n",
    "\n",
    "### AJOUTER ICI CE QU'IL FAUT POUR MODIFIER LE CIRCUIT\n",
    "\n",
    "\n",
    "### ET VOICI LE TEST QUI DOIT RENVOYER TRUE\n",
    "validator(2, circuitXOR, classicset(2,1, lambda x,y,z: (x,y,x^y)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3ad8860",
   "metadata": {},
   "source": [
    "## 2. Produit scalaire booléen\n",
    "\n",
    "Pour l'algorithme de Bernstein-Vazirani étudié dans le cours, nous aurons besoin d'un circuit qui calcule le produit scalaire entre une suite de $k$ bits $x_1, x_2, \\ldots, x_k$ fournis en entrée et une chaîne constante $s_1, s_2, \\ldots, s_k$ choisie une fois pour toute. Plus précisemment, le circuit attendu prend en entrée les bits $x_1, x_2, \\ldots, x_k, y$ et retourne en sortie $x_1, x_2, \\ldots, x_k, z$ avec\n",
    "$$\n",
    "z = y\\oplus\\left( x_1\\cdot s_1 \\oplus x_2\\cdot s_2 \\oplus \\cdots \\oplus x_k\\cdot s_k\\right)\n",
    "$$\n",
    "\n",
    "Par exemple, sur 3 bits :\n",
    " - si $(s_1,s_2,s_3) = (1,0,1)$ alors $z = y \\oplus x_1 \\oplus x_3$ ;\n",
    " - si $(s_1,s_2,s_3) = (0,0,1)$ alors $z = y \\oplus x_3$ ;\n",
    " - si $(s_1,s_2,s_3) = (1,1,1)$ alors $z = y \\oplus x_1 \\oplus x_2 \\oplus x_3$.\n",
    " \n",
    " \n",
    " Vous devez écrire une fonction `circuitProduit(s)` qui reçoit en entrée la liste des valeurs $s_1, s_2, \\ldots, s_k$ et qui retourne un circuit à $k+1$ qubits qui calcule le produit scalaire entre son entrée et la suite $(s_i)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "b83d840a",
   "metadata": {},
   "outputs": [],
   "source": [
    "### COMPLETER LA FONCTION circuitProduit POUR QU'ELLE PASSE LES TESTS DE VALIDATION !\n",
    "\n",
    "def circuitProduit(s):\n",
    "    k = len(s)\n",
    "    circuit = QuantumCircuit(k+1)\n",
    "    ### AJOUTER ICI CE QU'IL FAUT AU CIRCUIT !\n",
    "    return circuit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "cfcd8aa1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 705.552x451.5 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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tgzLli0rdo5Op8PcuXMxd+7cYufUqVMHa9euLfG+2rVrh99//728pRIREVE1VukOtxERERFVBgxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkolKGpPPnz+OZZ56Bp6cnnJyc0LZtW/zxxx/KdhHBrFmz4OvrCycnJ4SEhODUqVNmt3H16lWEh4fDzc0NHh4eGDNmDG7cuGE258iRI3jooYfg6OgIf39/vPvuuxXSHxEREVV+lS4kXbt2DcHBwbCzs8Mvv/yCY8eOYfHixahdu7Yy591338V7772Hjz/+GDExMXBxcUFoaChu3bqlzAkPD0diYiK2b9+OzZs3Y8+ePRg3bpyyPTMzE3379kWjRo1w8OBBLFq0CG+++SY+/fTTCu2XiIiIKidbrQu408KFC+Hv74/Vq1crYwEBAcq/RQTLli3DjBkzMGjQIADAl19+CW9vb2zcuBHDhw/H8ePHsXXrVsTFxaFz584AgPfffx8DBgzA//73P/j5+eHrr79GXl4eVq1aBXt7e7Rp0wbx8fFYsmSJWZgiIiKimqnShaSffvoJoaGhGDZsGH777TfUr18fL7zwAsaOHQsASE5ORmpqKkJCQpSfcXd3R7du3RAdHY3hw4cjOjoaHh4eSkACgJCQEOj1esTExODxxx9HdHQ0evToAXt7e2VOaGgoFi5ciGvXrpmtXAFAbm4ucnNzle8zMzMBAAaDAQaDAQCg1+thY2MDo9EIk8mkzC0Yz8/Ph4go4zY2NtDr9arjWimudkv0pNfrld9VAVtbbf8EC9dj6Z7y8/NLNV6RCmq1dk92dnYwmUwwGo0W76EsDAaDVXvS6XSwtbWtFL0CUB5La/RUMF7cvkArdz6uluyppP2eVgr6tUZPpdnvVTSDwWCVnkqr0oWkv//+Gx999BGmTp2K119/HXFxcXjxxRdhb2+PUaNGITU1FQDg7e1t9nPe3t7KttTUVHh5eZltt7W1RZ06dczmFF6hKnybqampRULSggULMGfOnCL1RkVFwdnZGQDQsGFDdOjQAUeOHMG5c+eUOS1atEDLli0RGxuLy5cvK+OBgYFo1KgR9uzZg6ysLGU8KCioFL8p6zh16hROnjypfG/Jnry8vBAVFWX2B9qrVy84OTlZuaviRUZGKv+2dE+FbxsABgwYgJycHOzatQtaPfUKarJOT7fZ2toiLCwM6enpiI6OLhi1XlMliIyMtGJPQK1atdC7d2+kpKQgPj6+0K1o029WVpbVeqpXrx66d+9e7D5CK4V7tXRPJe33tFLQrzV6Knm/p91z2NI97du3r9T3rxMtI6IKe3t7dO7cGfv371fGXnzxRcTFxSE6Ohr79+9HcHAwLly4AF9fX2XOk08+CZ1Oh/Xr1+Ptt9/GF198YfbLBAAvLy/MmTMHEyZMQN++fREQEIBPPvlE2X7s2DG0adMGx44dQ6tWrcx+Vm0lyd/fH+np6XBzcwNg2VWXJq//Ut5f4T1Jmt9Pk5WkgOnmO/WKcmpeX+XfFbmS1HxmlMV7KY2Cfit6JUnLfrVYSdKq3+QFAwBos5LU+LUtFu+nNAo/h4GKW0lqNmObFbsqXkG/Fb2SpOVz2NI9Xb16FZ6ensjIyFBev4tT6VaSfH190bp1a7OxVq1a4fvvvwcA+Pj4AADS0tLMQlJaWhoCAwOVOZcuXTK7jfz8fFy9elX5eR8fH6SlpZnNKfi+YE5hDg4OcHBwKDJuZ2cHOzs7szEbGxvV5efiDi1pfcipsOJqt1RPd/6utKZWj6V6Kut4Rbjzvq3Zk16vh16v7XtDCtdlzZ4qQ6/A7RdIwLo9Fbcv0Io1eyrrfq8i3NmvtXvS+vWpcL9a9KT9s/oOwcHBRVaA/vrrLzRq1AjA7ZO4fXx8sGPHDmV7ZmYmYmJilMNUQUFBuH79Og4ePKjM2blzJ0wmE7p166bM2bNnj9n/Lrdv344WLVoUOdRGRERENU+lC0lTpkzBgQMH8Pbbb+P06dNYu3YtPv30U0ycOBHA7f8pTZ48GW+99RZ++uknJCQkYOTIkfDz88PgwYMB3F556tevH8aOHYvY2Fjs27cPkyZNwvDhw+Hn5wcAePrpp2Fvb48xY8YgMTER69evx/LlyzF16lStWiciIqJKpPIc5/k/Xbp0wY8//ojp06dj7ty5CAgIwLJlyxAeHq7MeeWVV3Dz5k2MGzcO169fx4MPPoitW7fC0dFRmfP1119j0qRJ6NOnD/R6PYYMGYL33ntP2e7u7o6oqChMnDgRnTp1Qt26dTFr1iy+/Z+IiIgAVMKQBACPPvooHn300WK363Q6zJ07F3Pnzi12Tp06dbB27doS76ddu3b4/fffy10nERERVV+V7nAbERERUWXAkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkgiGJiIiISAVDEhEREZEKhiQiIiIiFQxJRERERCoYkoiIiIhUMCQRERERqWBIIiIiIlLBkERERESkotwhac+ePTh37lyJc1JSUrBnz57y3gURERGRZsodknr16oWIiIgS53z55Zfo1atXee+CiIiISDPlDkkictc5JpMJOp2uvHdBREREpBmrnpN06tQpuLu7W/MuiIiIiKzCtiyTn3vuObPvN27ciDNnzhSZZzQalfOR+vfvf08FEhEREWmhTCGp8DlIOp0O8fHxiI+PV52r0+nQpUsXLF269F7qIyIiItJEmUJScnIygNvnIzVp0gSTJ0/GSy+9VGSejY0NateuDRcXF8tUSURERFTByhSSGjVqpPx79erV6NChg9kYERERUXVRppBU2KhRoyxZBxEREVGlUu6QVCA2NhZxcXG4fv06jEZjke06nQ4zZ86817shIiIi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5tyZ9Ave/VZ4zp3viEtLS4Obm5vqyoaDgwMcHByKjNvZ2cHOzs5szMbGRnX5ubhDS1ofciqsuNot1dOdvyutqdVjqZ7KOl4R7rxva/ak1+uh12v73pDCdVmzp8rQK3D7BRKwbk/F7Qu0Ys2eyrrfqwh39mvtnrR+fSrcrxY9af+svoOIYNKkSfjxxx+xc+dOBAQEmG3v1KkT7OzssGPHDmXs5MmTOHfunHKYKigoCAkJCbh06ZIyZ/v27XBzc0Pr1q2VOYVvo2COloe6iIiIqPKoPEsY/2fixIlYu3YtNm3ahFq1ainnELm7u8PJyQnu7u4YM2YMpk6dijp16sDNzQ3/+c9/EBQUhAceeAAA0LdvX7Ru3RojRozAu+++i9TUVMyYMQMTJ05UVoPGjx+PDz74AK+88gqee+457Ny5Exs2bMCWLdosGRMREVHlUulWkj766CNkZGTg4Ycfhq+vr/K1fv16Zc7SpUvx6KOPYsiQIejRowd8fHzwww8/KNttbGywefNm2NjYICgoCM888wxGjhyJuXPnKnMCAgKwZcsWbN++He3bt8fixYvx+eef8+3/REREBKASriSV5jxyR0dHrFixAitWrCh2TqNGjYq8w+NODz/8MA4dOlTmGomIiKj6q3QrSURERESVAUMSERERkQqGJCIiIiIVDElEREREKhiSiIiIiFQwJBERERGpYEgiIiIiUsGQRERERKSCIYmIiIhIBUMSERERkQqGJCIiIiIVDElEREREKhiSiIiIiFQwJBERERGpYEgiIiIiUsGQRERERKSCIYmIiIhIBUMSERERkQqGJCIiIiIVDElEREREKhiSiIiIiFQwJBERERGpYEgiIiIiUsGQRERERKSCIYmIiIhIBUMSERERkQqGJCIiIiIVDElEREREKhiSiIiIiFQwJBERERGpYEgiIiIiUsGQRERERKSCIYmIiIhIBUMSERERkQqGJCIiIiIVDElEREREKhiSiIiIiFQwJBERERGpYEgiIiIiUsGQRERERKSCIYmIiIhIBUMSERERkQqGJCIiIiIVDElEREREKhiSiIiIiFQwJBERERGpYEgiIiIiUsGQRERERKSCIYmIiIhIBUMSERERkQqGJCIiIiIVDElEREREKhiSiIiIiFQwJBERERGpYEgiIiIiUsGQRERERKSCIYmIiIhIBUMSERERkQqG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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Circuit incorrect pour le vecteur [1, 0, 1]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def testscal(s):\n",
    "    k = len(s)\n",
    "    def aux(*xs):\n",
    "        y=xs[k]\n",
    "        for i in range(k):\n",
    "            if s[i] == 1:\n",
    "                y ^= xs[i]\n",
    "        return [*xs[:-1],y]\n",
    "    return aux\n",
    "\n",
    "check = True\n",
    "for ss in ['101', '00', '001', '111', '10111']:\n",
    "    s = list(map(int,ss))\n",
    "    k = len(s)\n",
    "    circ = circuitProduit(s)\n",
    "    outset = classicset(k,1,testscal(s))\n",
    "    check = validator(k, circ, outset)\n",
    "    if not check:\n",
    "        print('Circuit incorrect pour le vecteur', s)\n",
    "        break\n",
    "check"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d31dc16d",
   "metadata": {},
   "source": [
    "## 3. Plus ou moins de contrôle\n",
    "\n",
    "Maintenant que nous avons revu les constructions du cours, passons à quelque chose de plus original. Dans cette partie, nous allons revisiter les constructions de l'article [Elementary gates for quantum computation](https://arxiv.org/pdf/quant-ph/9503016v1) de A. Barenco *et al.* paru dans *Phys.Rev. A52 (1995) 3457*.\n",
    "\n",
    "La question que nous étudions est la suivante : comment faire pour simuler efficacement une porte NON avec $n$ bits de contrôle, $C^nX$, à l'aide de portes plus simples ? L'efficacité sera mesurée selon deux critères : la profondeur du circuit et le nombre de bits auxiliaires nécessaires au calcul."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2cd2ecd9",
   "metadata": {},
   "source": [
    "### 3.1 Simuler $C^nX$ avec $CCX$\n",
    "\n",
    "On s'intéresse d'abord au lemme 7.2 situé page 18 de l'article de référence. Il contient une figure que nous reproduisons ici avec qiskit :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "a9e14a25",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 203.885x785.944 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "gauche = QuantumCircuit(9)\n",
    "gauche.mcx([0,1,2,3,4],8)\n",
    "draw_circ(gauche)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "c6ec1e9a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1123.61x785.944 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "droite = QuantumCircuit(9)\n",
    "droite.ccx(4,7,8)\n",
    "droite.ccx(3,6,7)\n",
    "droite.ccx(2,5,6)\n",
    "droite.ccx(0,1,5)\n",
    "droite.ccx(2,5,6)\n",
    "droite.ccx(3,6,7)\n",
    "droite.ccx(4,7,8)\n",
    "droite.ccx(3,6,7)\n",
    "droite.ccx(2,5,6)\n",
    "droite.ccx(0,1,5)\n",
    "droite.ccx(2,5,6)\n",
    "droite.ccx(3,6,7)\n",
    "draw_circ(droite)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "20e82d27",
   "metadata": {},
   "source": [
    "Demandons à Qiskit de tester si ces deux circuits sont équivalents."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "cd646149",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Operator(gauche) == Operator(droite)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d97c61f",
   "metadata": {},
   "source": [
    "Dans le texte de l'article, la notation $\\Lambda_n(\\sigma_x)$ désigne une porte $C^nX$. Lire et comprendre les hypothèses du lemme 7.2. Écrire une fonction qui prend en entrée un nombre $n$ de qubits et un nombre $m$ de bits de contrôle. Cette fonction doit tester si les hypothèses sont satisfaites (si ce n'est pas le cas elle retourne `None`), construire les circuits `gauche` et `droite` correspondant, vérifier que `Operator(gauche) == Operator(droite)` et retourner `droite`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "8a482977",
   "metadata": {},
   "outputs": [],
   "source": [
    "def first_sim_cnx(n, m):\n",
    "    \"Simule une porte C^m(X) sur un circuit de n qubits\"\n",
    "    pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8bb5bc80",
   "metadata": {},
   "source": [
    "### 3.2 Simuler $C^nX$ avec $CCX$ et 1 seul bit auxiliaire\n",
    "\n",
    "On va maintenant utiliser le lemme 7.3 et le corollaire 7.4 situés page 19 et 20 pour utiliser un unique qubit auxiliaire. Voici la figure de la page 20."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "f6f6d977",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAALAAAAJxCAYAAADinDhmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAxlUlEQVR4nO3dfVyUdb7w8c/AqMPDoCLWlCCigIoKGORqtSaKnVgfqt0eJWw7bO1WrJyWA57qlLv3tnkw97SLVktP6+YWN/a4KrXWRg8sWwYRHsIxFYUcYFZHIAFBhZn7j245ESDMOBfjb/i+X69e+3Ku6zfzZfh4zTXXTK3O4XA4EEJRPp4eQIjzIQELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFCaBCyUJgELpUnAQmkSsFDaiAjYZrORk5NDZGQkBoOBsLAwMjMzaW9vJz09HZ1Ox+bNmz09pnCB3tMDaK2yspKUlBSsVisBAQHExMTQ0NBAXl4eNTU1NDU1ARAfH+/ZQTVitzt4b3cDTxWa+bC8kbaTXQT667k68RLuvWUmS753KT4+Ok+P6TKdw+FweHoIrdhsNubOnYvFYiErK4t169ZhNBoB2LBhA2vXrkWv19Pd3U1LSwtBQUEenti9jljbuG7N3/h83/EB94mfEcz2vKWEmQKHcTL38eqAV61aRUFBARkZGWzatKnP9vj4ePbs2UNERASHDh3ywITaaTjazoK0HXzV2D7ovpMvCeDjrSu49KKAYZjMvbz2HNhsNlNYWEhISAjr16/vd5+EhAQA4uLiet1++PBhVq5cidFoZPz48axevZrjxwc+il2IVj/00ZDiBfiqsZ3VD32k8UTa8NqACwoKsNvtpKamEhjY/8ujn58f0Dvg1tZWkpKSsFgsFBQU8Mwzz1BSUsLy5cux2+3DMvv5+uJAE+/tbnBqzXu7G6g+2KzRRNrx2jdxxcXFACQlJQ24j8ViAXoH/Mwzz1BfX89HH33E5MmTAQgNDeWKK65g+/btXH/99doN7SZ/eGWfS+ue3mZm84NXuHkabXntOXBYWBgWi4XPP/+83ysMXV1dXHLJJdhsNmpqapg6dSrwv8G///77vfafNm0aixYt4vnnn3d6lsTERKxWq/M/hIuOGdM5PWqy0+tGn6ljYusLGkw0OJPJRHl5udPrvPYI3N7+zflfR0dHv9sLCwux2WwYjUYiIiJ6bt+7dy833XRTn/1nzZrF3r17XZrFarVSX1/v0lqXRDpglPPLTncxvHO6gdcGbDKZaG5upqKiggULFvTa1tjYSHZ2NgCxsbHodP97HbS5uZlx48b1ub/g4GC+/PJLl2cZTjZ9N6dcWDdG303IpElun2coXH2OvDbg5ORkzGYzubm5LF26lOjoaADKyspIS0vDZrMBw/MBhisvjefjd1u/4P7Hdzu9Lveh28i8/TcaTKQdr70KkZOTw4QJEzhy5AizZs1izpw5REVFMW/ePKZOncrixYuBvpfQxo8fT0tLS5/7a2pqIjg4eDhGP293XBeFn8HXqTV+Bl/uWBml0UTa8dqAQ0NDKSkpYdmyZRgMBmprawkODiY/P5+ioiL2798P9A145syZ/Z7r7t27l5kzZw7L7OdrfNAY/i11tlNr7r99NuOCxmg0kXa89irEubS1tREUFIROp6O1tRV/f/+ebRs3buTBBx/k0KFDhIaGArB7927mz5/P66+/zg033OCpsZ1itztY/dCHvFRUM+i+qcum8eJvrlbyOxEjMuCzQU6fPp19+3pfMz1x4gRz5swhJCSEX/3qV3R2dpKTk8PEiRP5+OOP8fFR50XLbnewcUsVT/z5C6y2vldjTCF+3H/7bP79x3OUjBcAxwj07LPPOgDHzTff3O/2gwcPOpYtW+YICAhwjB071pGamuo4evToME/pPqdPdzu27TrkuPfRUoff5X90MOc5R/CVLzpOn+729GjnzWuvQpxLVVUV0Pf896xp06axc+fO4RxJU6NG+XDTNRHcdE0Ef3m/jvrOk/gZ9Iwapc6ryUDU/wlcMFjAQh0j8gh89nsSQn0j8ggsvIcELJQmAQulScBCaRKwUJoELJQmAQulScBCaRKwUJoELJQmAQulScBCaRKwUJoELJQmAQulScBCaRKwUJoELJQmAQulScBCaRKwUJoELJQmAQulScBCaRKwUJoELJQmAQulScBCaRKw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",
      "text/plain": [
       "<Figure size 203.885x785.944 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "gauche = QuantumCircuit(9)\n",
    "gauche.mcx([0,1,2,3,4,5,6],8)\n",
    "draw_circ(gauche)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "93faa1e0",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAJxCAYAAABfWDk6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABNBklEQVR4nO3de1xUZf4H8M9wHa4iYI4KKggoqIBCpmkmiqmL2s1bKllLWplJrYmbbVm7W67mrq3XLG0tS0K7ei0vWJGZgbcf6SiKQgww6nBRGEAYZn5/uLqSIMzAmeE5fN6vl69ezXmeOV84Zz5zznOec1CYTCYTiIhIWHa2LoCIiJqHQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCY5ATEQmOQU5EJDgGORGR4BjkRESCaxNBrtPpkJSUhKCgICiVSvj7+yMxMRF6vR4JCQlQKBRYtWqVrcskIrKIg60LkNrx48cxZswYaLVauLm5ISwsDAUFBVixYgWys7NRXFwMAIiMjLRtoRIxGk3Yf7gAa1LU+D6jEOUVBri7OuD+6E6YPTkUI+7pDDs7ha3LJAlVXTNgy7cX8O7W0/j1XAmqrtXCx8sZj4zojmcn9UKfYG9bl0jNpDCZTCZbFyEVnU6Hfv36QaPRYN68eVi0aBE8PDwAAEuXLsWCBQvg4OCA2tpalJaWwtPT08YVt6w8bTkenLsPx04XNdgmspc3tq0YCX+VuxUrI2v5IaMQE+al4nJJVYNtHhsTiA/+eh+UzrI/rpMtWQf51KlTkZycjDlz5mDlypW3LY+MjMSJEycQEBCA8+fP26BC6RRc0mNQ/Hb8VqhvtG3XTm44tGkcOt/lZoXKyFq+Sy/EqGe+QXWNsdG2D9zbBTtWPgBHxzYx2io7st1qarUaKSkp8PX1xeLFi+ttExUVBQCIiIio8/qFCxcwfvx4eHh4oH379nj88cdRVNTwUW1r9PgrPzQpxAHgt0I9Hn/lB4krImsqr6jBIy/ua1KIA8Cen/Lx1vrj0hZFkpFtkCcnJ8NoNGLatGlwd69/2MDFxQVA3SAvKytDTEwMNBoNkpOT8d577yEtLQ1jx46F0di0D4Wt/Xq2GPsPF5jVZ//hApw8VyJRRWRtH+84h5Kr1Wb1WbvlNKpraiWqiKQk2yBPTU0FAMTExDTYRqPRAKgb5O+99x7y8/Px1VdfYezYsZg4cSI2b96Mn3/+Gdu2bZO26Bby7tbTFvVbu0XdwpWQrazdYv4+cLGoEl/uz5WgGpKabMfI/f39odFocOzYsXpnpBgMBnTq1Ak6nQ7Z2dkIDAwE8L/gP3DgQJ32PXr0wLBhw7Bhwwaza4mOjoZWqzX/h7DQZY8EVDt2NbufU00uOpR9IEFFZE0mKFDg/bpFfd0r09Cucl+L1kNNo1KpkJGRYVFf2V6m1uuvjw9XVlbWuzwlJQU6nQ4eHh4ICAi4+fqpU6cwceLE29r37t0bp06dsqgWrVaL/Px8i/paJMgEOJrfrdoA69ZJ0lA4ARbOKCzXV6G8kPuAaGQb5CqVCiUlJTh69CgGDRpUZ1lhYSHmz58PAAgPD4dC8b951CUlJfDy8rrt/by9vXHmzBmLa7EmnUMtrlnQz9mhFr5durR4PWRdJgAFJgOgMP/j7eHmAE/uAzbRnJyQbZDHxsZCrVZjyZIlGDlyJEJCQgAA6enpiI+Ph06nA2CdG4EsPV2y1DubfsWLbx82u9+SVx5D4vQ3JaiIrO3RF/fji/05Zvf77ut30D/Mt+ULIknJ9mJnUlISfHx8kJeXh969e6Nv374IDg7GgAEDEBgYiOHDhwO4feph+/btUVpaetv7FRcXw9tbjDvgZjwYDBelvVl9XJT2mDE+WKKKyNpmTw41u889fTswxAUl2yD38/NDWloa4uLioFQqkZOTA29vb6xbtw47d+5EVlYWgNuDPDQ0tN6x8FOnTiE01PwPhy2093TGC9P6mNXnxel94OXpLFFFZG3D7+mE+/p3bHJ7hQJ47Zl+ElZEUpLtrJU7KS8vh6enJxQKBcrKyuDq6npz2bJly7Bw4UKcP38efn5+AIDDhw9j4MCB+OKLL/Dwww/bqmyzGI0mPP7K9/hkZ3ajbafF9cBHb97PZ67ITFFpFYY/tRv/l1XcaNvVCwdh9pQwK1RFUmiTQX4jmHv27InTp+vOt7169Sr69u0LX19fvPHGG6iqqkJSUhI6dOiAQ4cOwc5OnJMYo9GEZRszsfzjX6HV3T57R+Xrghen98FLT/RliMvU1fJqJC1Px6bt51BRZbhted/g9vjbnCg8GNPNBtVRS2mTQb5+/XrMnDkTkyZNQkpKym3Ls7OzkZiYiO+++w4ODg4YO3Ysli9fjg4dOtig2uarqTHiqwO5+C69EP/5OguVVbXw9nSC9sA0PlujjSi9eg2bdpzDn9/JQEWVAW4uDvhm7SgM7texzqwtEpNsZ63cSWZmJoDbx8dv6NGjB3bs2GHNkiTl6GiHiQ8EYOIDAfj6QC7yqyrgonRgiLchXp7OeH5qbyz54P9QUWWAl4cThvS37rRYkk6b/CQ3FuRERCJpk0fkN57DQkQkB23yiJyISE4Y5EREgmOQExEJjkFORCQ4BjkRkeAY5EREgmOQExEJjkFORCQ4BjkRkeAY5EREgmOQExEJjkFORCQ4BjkRkeAY5EREgmOQExEJjkFORCQ4BjkRkeAY5EREgmOQExEJjkFORCQ4BjkRkeAY5EREgmOQExEJjkFORCQ4BjkRkeAY5EREgmOQExEJjkFORCQ4BjkRkeAY5EREgmOQExEJjkFORCQ4BjkRkeAY5EREgmOQExEJjkFORCQ4BjkRkeAY5EREgmOQExEJjkFORCQ4BjkRkeAY5EREgmOQExEJjkFORCQ4BjkRkeDaRJDrdDokJSUhKCgISqUS/v7+SExMhF6vR0JCAhQKBVatWmXrMomILOJg6wKkdvz4cYwZMwZarRZubm4ICwtDQUEBVqxYgezsbBQXFwMAIiMjbVuohGprjdiVpsF3GYUouVoNAKi8ZkBtrRH29m3iu7zNK6+oQfKubJSWXd/+V8qrkXHyMqJ7d7BxZdQSFCaTyWTrIqSi0+nQr18/aDQazJs3D4sWLYKHhwcAYOnSpViwYAEcHBxQW1uL0tJSeHp62rjilmUymbBy8yn886NM/Faov215105umPd4Xzw/NQwKhcIGFZLU9BU1eGXlEfzn6yxcLa+5bfmAPh3w1+f6Y9RgPxtURy1F1kE+depUJCcnY86cOVi5cuVtyyMjI3HixAkEBATg/PnzNqhQOkajCbPe+BEbvsxqtG3CwyF4b9EQ2NkxzOWk9Oo1jHz6G2Sc1N2xnZ2dAu+9NhgJj/S0UmXU0mR7Xq1Wq5GSkgJfX18sXry43jZRUVEAgIiIiJuvaTQazJkzBwMGDICzs7OwR6p/W3esSSEOABu+zMLf1h2TuCKyJpPJhAnzUhsNceC/X/p/PYi9h/KtUBlJQbZBnpycDKPRiGnTpsHd3b3eNi4uLgDqBvm5c+fw+eefQ6VS4e6777ZKrS3tSlk13t6YaVaftzdm4mp5tUQVkbX9cESL/YcLmtzeaDThjXf5ZS4q2QZ5amoqACAmJqbBNhqNBkDdIB86dCgKCwuxbds2xMbGSlukRDbtOAd9pcGsPvpKAzbtOCdRRWRta1LUZvc5eOwiTpwpkqAakppsgzw3NxcA0K1bt3qXGwwGHDx4EEDdILezE/9X8lVqrkX9vtxvWT9qXUwmk8X7gKX9yLZkO/1Qr78+S6OysrLe5SkpKdDpdPDw8EBAQICktURHR0Or1Uq6jltd8nwacOhsdr8fDmbAz2+mBBWRNRnhiGrvv1jU9+3la/H+m7tbuCJqCpVKhYyMDIv6yjbIVSoVSkpKcPToUQwaNKjOssLCQsyfPx8AEB4eLvkFTa1Wi/x8K15Icq6waMvWXKuwbp0kETvA27Ke+qsl0F/kPiAa2QZ5bGws1Go1lixZgpEjRyIkJAQAkJ6ejvj4eOh016/mW+NGIJVKJfk6blVqX4LbZ403zs2+GF5durR4PWR9Fw0XYXDoaHa/9q7lcOU+YBPNyQnZBnlSUhI2b96MvLw89O7dG7169UJVVRXOnTuHMWPGoHv37vj222/rjI9LxdLTJUudOFOEyIlfmd3vpx2LER6yruULIqtb/ekpzHnrkFl9OrRXIi9jJ5yd7CWqiqQi/pW9Bvj5+SEtLQ1xcXFQKpXIycmBt7c31q1bh507dyIr6/oca2sEubVF9PTB0Cjzvt2HRqkQHmLh+Ti1OvFjg9DO3cmsPrMm9GSIC0rWd3Y2pLy8HJ6enlAoFCgrK4Orq2u97V5//XW88cYbEPFX9FthOQbFb0fBpYpG23a+yxWHNo1D1071z7cnMe35SYO45/bAUNv4/jvs7k74Zu0oBrmgZHtEficnT56EyWRCcHBwvSH+2Wef4bPPPsOpU6fq/L+1h0iao2snd/y4cSzCenjdsV1ooBd+3DiWIS5DD9zrh11rRsHL485H5g+P6IYdK0cyxAXWJo/I169fj5kzZ2LSpElISUm5bXlDs1hmzJiBjRs3Slxdy7rx5MM1KWp8f6QQlVW1AABnJztsXTYCf7jPj09AlLnyihps3pWNd7ecxrHT12/4USiAJx8KwbOTevEJiDIg24udd5KZef329YbGx+X03WZvb4dxw7pi3LCuAIAuIzaj4HIlfL2UN18jeXN3dcSsCb0wa0Kvm9u/cwdXbHjjPluXRi2kTR6KNRbkcibqQ8CoZXD7y1ObPCK/8RwWIiI5aJNH5EREcsIgJyISHIOciEhwDHIiIsExyImIBMcgJyISHIOciEhwDHIiIsExyImIBMcgJyISHIOciEhwDHIiIsExyImIBMcgJyISHIOciEhwDHIiIsExyImIBMcgJyISHIOciEhwDHIiIsExyImIBMcgJyISHIOciEhwDHIiIsExyImIBMcgJyISHIOciEhwDHIiIsExyImIBMcgJyISHIOciEhwDHIiIsExyImIBMcgJyISHIOciEhwDHIiIsExyImIBMcgJyISHIOciEhwDHIiIsExyImIBMcgJyISHIOciEhwDHIiIsExyImIBMcgJyISXJsIcp1Oh6SkJAQFBUGpVMLf3x+JiYnQ6/VISEiAQqHAqlWrbF2mpGpqjDh5rgTVNbUAAJPJZOOKyNqullejpsYIADAYjNwHZMTB1gVI7fjx4xgzZgy0Wi3c3NwQFhaGgoICrFixAtnZ2SguLgYAREZG2rZQieRf1GPdZ6fx/udnoNVV3nxdW1SJ11YfwaxHe8FP5WbDCklqx9Q6rElR45Nd2aisuv5FfrG4ChETvsTsyaGYPjYI7q6ONq6SmkNhkvHXsk6nQ79+/aDRaDBv3jwsWrQIHh4eAIClS5diwYIFcHBwQG1tLUpLS+Hp6WnjilvWvp/z8ciL+1Gmr2mwjYebI75YPgKxA7tYsTKylmUbMzH/X7/csU3P7u2we80oBPh5WKkqammyDvKpU6ciOTkZc+bMwcqVK29bHhkZiRMnTiAgIADnz5+3QYXSOXjsIkbM3IVr1cZG2zo72SF1/R9wb2RHK1RG1vLvj3/FC0sPN6ltQBcPHPp4HDr6uEhcFUlBtmPkarUaKSkp8PX1xeLFi+ttExUVBQCIiIi4+dpnn32GRx99FN26dYOrqyt69eqFV155BeXl5VapuyUYjSb88bW0JoU4AFyrNuLJV9M4ZiojGq0e8/555yPxW13IL8MrKzIkrIikJNsgT05OhtFoxLRp0+Du7l5vGxeX60cftwb5smXLYG9vj7feegu7d+/Gs88+i7Vr12L06NEwGpsWjLaW+ksBsnKvmNUnK/cKUg8XSlQRWdv7n59Bba15X8ybd2ej5Oo1iSoiKcn2YmdqaioAICYmpsE2Go0GQN0g3759Ozp06HDz/++//3506NAB06ZNw48//oihQ4dKVHHL2fBFlkX91n9xBiMGdm7hasgWNnx5xuw+lVW1SN6VjdlTwiSoiKQk2yDPzc0FAHTr1q3e5QaDAQcPHgRQN8hvDfEboqOjAQD5+fkW1RIdHQ2tVmtRX0tc8pwJOPiZ3e/zHd/Db3O8BBWRNZlgjwLv1yzqu+DVZXjrpT0tXBE1hUqlQkaGZcNbsg1yvV4PAKisrKx3eUpKCnQ6HTw8PBAQEHDH9zpw4AAAIDQ01KJatFqtxV8CFlEaLNqyNdUG69ZJ0lA4At6WdS3X61FeyH1ANLINcpVKhZKSEhw9ehSDBg2qs6ywsBDz588HAISHh0OhUDT4Pvn5+Xj11VcxevRoi+eaq1Qqi/pZqsjhGqos6Kd0uAafLpyGKAcFxkqY7MyfgeLpCnhwH7CJ5uSEbIM8NjYWarUaS5YswciRIxESEgIASE9PR3x8PHQ6HYA73whUXl6OBx98EE5OTvjggw8srsXS0yVLpXxzHlOSDpjd78N/P4tJo96WoCKytjlv/YTVn6rN6mNnp8CvP26Av6r+yQHUesl21kpSUhJ8fHyQl5eH3r17o2/fvggODsaAAQMQGBiI4cOHA6g7Pn6ryspKjBs3DhcuXMCePXvQqVMna5bfLA+P6Gb2fGCVrwseGl7/9QQSz7OTzB8GHD+sK0NcULINcj8/P6SlpSEuLg5KpRI5OTnw9vbGunXrsHPnTmRlXZ/ZUV+Q19TUYMKECcjIyMDu3bsRFibWVXwnR3ssn3+PWX2Wz78HTo72ElVE1tY7qD1mT256mLdzd8Kbz0dJWBFJSdZ3djakvLwcnp6eUCgUKCsrg6ur681lRqMRU6ZMwbZt27Br166bR+4iWpuixpzFh2A0NryJ7ewUWPXyIDxrxoeexGAwGPHU6z/iw21n79iuvacTtq98AIP78c5eUbXJID98+DAGDhyInj174vTp03WWPfvss3j33Xfx5z//GQ8++GCdZT169Kh3emJr9uNRLf616Vd8feC32wL94RHd8Kf4PhjS37oXY8l6TCYTNu/KxsrNp3A483KdZe6uDnh8XDDmzeiDQD95PWeorWmTQb5+/XrMnDkTkyZNQkpKSp1l3bt3vzkH/ff+85//4IknnrBChS0vT1uOg8cu4tm//4TSsmp09FFCe2CarcsiKzp+ugjDn9qFkqvV8G7nhJxvJsPDzcnWZVELkO0Y+Z1kZmYCqH98PCcnByaTqd5/ooY4APir3DFlTA+4uVyfqORg3yY3fZsW2csHrsrr29/F2YEhLiNt8tN8pyAnIhKNbOeR38mN57AQEclBmzwiJyKSEwY5EZHgGORERIJjkBMRCY5BTkQkOAY5EZHgGORERIJjkBMRCY5BTkQkOAY5EZHgGORERIJjkBMRCY5BTkQkOAY5EZHgGORERIJjkBMRCY5BTkQkOAY5EZHgGORERIJjkBMRCY5BTkQkOAY5EZHgGORERIJjkBMRCY5BTkQkOAY5EZHgGORERIJjkBMRCY5BTkQkOAY5EZHgGORERIJjkBMRCY5BTkQkOAY5EZHgGORERIJjkBMRCY5BTkQkOAY5EZHgGORERIJjkBMRCY5BTkQkOAY5EZHgGORERIJjkBMRCY5BTkQkuDYR5DqdDklJSQgKCoJSqYS/vz8SExOh1+uRkJAAhUKBVatW2bpMIiKLONi6AKkdP34cY8aMgVarhZubG8LCwlBQUIAVK1YgOzsbxcXFAIDIyEjbFiqh85qreHfLaXyXUYiLRZUAgCvl1TivuYpAP08bV0dSM5lM+Pn/LmFtymlcKr6+/S+XVGH5pl/xxIPBaO/pbOMKqbkUJpPJZOsipKLT6dCvXz9oNBrMmzcPixYtgoeHBwBg6dKlWLBgARwcHFBbW4vS0lJ4esor1K6WVyNhURo+35eD+rayQgE8GtsdG964D57uTtYvkCSXlXMFjy04gKPqonqXuyjtMX9GOBY92w92dgorV0ctRdZBPnXqVCQnJ2POnDlYuXLlbcsjIyNx4sQJBAQE4Pz58zaoUDpl+mrEJOzGkVO6RttGhfniwIYx8HBjmMvJqewS3PfEThRfudZo24SHQ/D+60OgUDDMRSTbMXK1Wo2UlBT4+vpi8eLF9baJiooCAERERNx8LS0tDbGxsejUqROcnZ3h5+eHyZMnQ61WW6XuljLrjYNNCnEAOHJKh1lvHJS4IrKm6ppaxD23p0khDgAbvszC2hSx9nH6H9kGeXJyMoxGI6ZNmwZ3d/d627i4uACoG+QlJSXo27cvVqxYgT179mDJkiU4efIkBg0aBI1GY5Xamyu3oAxb9lwwq8+WPRfwW2G5RBWRtX2xLwc5BeZtz39t+hVGo2xP0GVNthc7U1NTAQAxMTENtrkRzLcG+fjx4zF+/Pg67e6++2707NkTn3/+ORITEyWotmWt23rG7A+k0WjCuq2n8ebcaImqImta/an5R9fZeWXY81M+Rg/xk6AikpJsgzw3NxcA0K1bt3qXGwwGHDx4fTjh1iCvj4+PDwDAwcGyX1d0dDS0Wq1FfS1x2eOPgGP9P/edLFv7NT5c+lDLF0RWZYICBe1fAxTmn3BPfPIVtKvcL0FV1BiVSoWMjAyL+so2yPV6PQCgsrKy3uUpKSnQ6XTw8PBAQEDAbctra2thNBqRm5uLl19+GSqVCpMmTbKoFq1Wi/z8fIv6WiRIATia363aoLBunSQNO2fA27JR03J9NcoLuQ+IRrZBrlKpUFJSgqNHj2LQoEF1lhUWFmL+/PkAgPDw8Hqv1N9///03j9iDgoKQmpqKDh06WFyLNV12MKLagn5ODiZ06NKlxesh6zJBgQKT0aIjcg83R3hyH7CJ5uSEbKcfzp07FytXroS/vz/27duHkJAQAEB6ejri4+Nx/vx51NTU4Lnnnqv3rs4zZ86gtLQUFy5cwNtvv41Lly7h4MGD6Nq1q7V/FLO9sfYoXl97zPx+s/vjtWf6SVARWVvszN3Yf7jA7H6p68cgZkBnCSoiKcl21kpSUhJ8fHyQl5eH3r17o2/fvggODsaAAQMQGBiI4cOHA2h4fLxnz5645557MGXKFOzfvx9lZWVYunSpNX8Ei818tCfs7c2bD+xgr8BTj4RIVBFZ2+zJoWb36RXQDsPu7iRBNSQ12Qa5n58f0tLSEBcXB6VSiZycHHh7e2PdunXYuXMnsrKyADR+oRMAvLy8EBQUhHPnzklddovofJcbHh8XZFafx8cHo/NdbhJVRNY2flhX9ApoZ1afBX+sf5iRWj/ZDq3cSXl5OTw9PaFQKFBWVgZXV9c7tr906RJ69OiBxx9/HKtXr7ZSlc1TWWXA6Ge/xQ9HGp8tMzRKhW/WjoKLUraXTNqk85qruO+JnSi4VNFo23mP98Gyl+6xQlUkhTYZ5IcPH8bAgQPRs2dPnD59us6y6dOnIygoCJGRkfDy8sLZs2exfPlyFBYWIj09HUFB5h3p2lJllQGJS37Gxq/PosZgvG25o4MdnngwGP9eMJAhLlN52nI8+Wpag+Pl3u2c8ZdZkXhhem8ejQusTQb5+vXrMXPmTEyaNAkpKSl1lq1atQofffQRzp49i6qqKvj7+yMmJgYLFy5scE56a3exqBIffJmF7zIK8d0vhag2GOHp5oizOybiLh8XW5dHVnAquwTrtp7Guq2nca3GCKWTPda+ei8mjwrkl7gMtMkgT0xMxIoVK/Dmm29i4cKFti7Hqvxik5F/qQJd7nKFZt9jti6HrIzbX55ke7HzTjIzMwE07UInEVFr1ybPqW48h4WISA7a5BE5EZGcMMiJiATHICciEhyDnIhIcAxyIiLBMciJiATHICciEhyDnIhIcAxyIiLBMciJiATHICciEhyDnIhIcAxyIiLBMciJiATHICciEhyDnIhIcAxyIiLBMciJiATHICciEhyDnIhIcAxyIiLBMciJiATHICciEhyDnIhIcAxyIiLBMciJiATHICciEhyDnIhIcAxyIiLBMciJiATHICciEhyDnIhIcAxyIiLBMciJiATHICciEhyDnIhIcAxyIiLBMciJiATHICciEhyDnIhIcAxyIiLBMciJiATHICciEhyDnIhIcAxyIiLBMciJiAQn+yDX6XRISkpCUFAQlEol/P39kZiYCL1ej4SEBCgUCqxatcrWZUpOfb4U725Ro0xfAwCoMRhtXBFZk8lkwnfphSivuL799ZUGXCqqtHFV1FIUJpPJZOsipHL8+HGMGTMGWq0Wbm5uCAkJQUFBAS5evIi4uDgUFxfj0KFDSEtLw5AhQ2xdriR2/vAbln34K75LL7xt2bC7O+GlGX0QN7SrDSoja6itNWLtltNY/ekpnL5wpc4yRwc7THwgAC8nhKNPsLeNKqSWINsg1+l06NevHzQaDebNm4dFixbBw8MDALB06VIsWLAADg4OqK2tRWlpKTw9PW1ccctbvP4EFq7IaLTdW3Oj8fJTEVaoiKzpWnUtpiQdwFepuXds5+bigM//NQKjBvtZqTJqabIN8qlTpyI5ORlz5szBypUrb1seGRmJEydO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",
      "text/plain": [
       "<Figure size 454.719x785.944 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "droite = QuantumCircuit(9)\n",
    "droite.mcx([0,1,2,3,4],7)\n",
    "droite.mcx([5,6,7],8)\n",
    "droite.mcx([0,1,2,3,4],7)\n",
    "droite.mcx([5,6,7],8)\n",
    "draw_circ(droite)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "17ec0236",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Operator(gauche) == Operator(droite)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e9a691e",
   "metadata": {},
   "source": [
    "Lire et comprendre les hypothèses du lemme 7.3 et du corollaire 7.4. Écrire une fonction qui prend en entrée un nombre $n$ de qubits et un nombre $m$ de bits de contrôle. Cette fonction doit tester si les hypothèses sont satisfaites (si ce n'est pas le cas elle retourne `None`), construire les circuits `gauche` et `droite` correspondant, vérifier que `Operator(gauche) == Operator(droite)` et retourner `droite`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "1aea6931",
   "metadata": {},
   "outputs": [],
   "source": [
    "def second_sim_cnx(n, m):\n",
    "    \"Simule une porte C^m(X) sur un circuit de n qubits en utilisant un unique qubit auxiliaire\"\n",
    "    pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "327d3d3d",
   "metadata": {},
   "source": [
    "### 3.3 Ça vous a plu ? Vous en demandez encore ? (BONUS)\n",
    "\n",
    "Avec des portes quantiques, on peut se débarasser de ce dernier qubit auxiliaire et simuler la port $C^nX$ directement. C'est l'objet des lemmes 7.5 et 7.6 de l'article. Pour cela on a besoin de la porte $\\sqrt{X}$, qui vérifie $\\sqrt{X} \\cdot \\sqrt{X} = X$, de son inverse et de leurs versions contrôlées. Elle est notée $SX$ en Quiskit.\n",
    "\n",
    "Voici un exemple de circuit qui réalise $CX$ grâce à cette astuce :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "d17c053f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 203.683x200.667 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "gauche = QuantumCircuit(2)\n",
    "gauche.cx(0,1)\n",
    "draw_circ(gauche)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "1a32295f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 454.517x200.667 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "droite = QuantumCircuit(2)\n",
    "droite.csx(0,1)\n",
    "droite.x(0)\n",
    "droite.csx(0,1).inverse()\n",
    "droite.x(0)\n",
    "droite.sx(1)\n",
    "draw_circ(droite)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "f8546d2a",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Operator(gauche) == Operator(droite)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d6836641",
   "metadata": {},
   "source": [
    "Si vous avez besoin de porte contrôlées généralisées, vous pouvez les construire comme ceci (c'est l'exemple de la figure page 21) :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "a1829b38",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 538.33x785.944 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.circuit.library.standard_gates import SXGate\n",
    "\n",
    "droite = QuantumCircuit(9)\n",
    "droite.csx(7,8)\n",
    "droite.mcx([0,1,2,3,4,5,6],7)\n",
    "droite.csx(7,8).inverse()\n",
    "droite.mcx([0,1,2,3,4,5,6],7)\n",
    "droite.append(SXGate().control(7), (0,1,2,3,4,5,6,8))\n",
    "draw_circ(droite)\n",
    "\n",
    "gauche = QuantumCircuit(9)\n",
    "gauche.mcx([0,1,2,3,4,5,6,7],8)\n",
    "Operator(gauche) == Operator(droite)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "89b69035",
   "metadata": {},
   "source": [
    "Si vous avez besoin de construire des racines de racines de racines de $X$, vous pouvez les construire comme ceci :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "004e6f18",
   "metadata": {},
   "outputs": [],
   "source": [
    "def racine(circ, kieme, qubit):\n",
    "    \"simule une porte racine kieme sur le qubit du circuit circ\"\n",
    "    circ.h(0)\n",
    "    circ.p(-pi/k, 0)\n",
    "    circ.h(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f389563c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1105.17x117.056 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/latex": [
       "$$\n",
       "\n",
       "\\begin{bmatrix}\n",
       "0 & 1  \\\\\n",
       " 1 & 0  \\\\\n",
       " \\end{bmatrix}\n",
       "$$"
      ],
      "text/plain": [
       "<IPython.core.display.Latex object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 185.453x117.056 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/latex": [
       "$$\n",
       "\n",
       "\\begin{bmatrix}\n",
       "0 & 1  \\\\\n",
       " 1 & 0  \\\\\n",
       " \\end{bmatrix}\n",
       "$$"
      ],
      "text/plain": [
       "<IPython.core.display.Latex object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from math import pi\n",
    "moncircuit = QuantumCircuit(1)\n",
    "k = 1<<2\n",
    "for _ in range(k):\n",
    "    racine(moncircuit, k, 0)\n",
    "show(moncircuit)\n",
    "moncircuitb = QuantumCircuit(1)\n",
    "moncircuitb.x(0)\n",
    "show(moncircuitb)\n",
    "Operator(moncircuit) == Operator(moncircuitb)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4a25a91d",
   "metadata": {},
   "source": [
    "Lire et comprendre les hypothèses du lemme 7.5 et du corollaire 7.6. Écrire une fonction qui prend en entrée un nombre $n$ de qubits. Cette fonction doit construire les circuits `gauche` et `droite` correspondant à la simulation quadratique d'un $C^nX$, vérifier que `Operator(gauche) == Operator(droite)` et retourner `droite`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "2a8d0aa8",
   "metadata": {},
   "outputs": [],
   "source": [
    "def last_sim_cnx(n):\n",
    "    \"Simule une porte C^n(X) sur un circuit de n qubits en utilisant X, SX, CSX et leurs inverses\"\n",
    "    pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d81882b6",
   "metadata": {},
   "source": [
    "### 3.4 C'est la fin de la fiche ! Vous êtes toujours là ? (BONUS du BONUS)\n",
    "\n",
    "En TD vous vous êtes intéressés à réaliser la porte $n$-OR qui est un porte OU à $n$ entrées. Montrer qu'on peut simuler cette porte avec $n+1$ qubits ($n$ d'entrée et $1$ de sortie), sans qubit auxiliaire, en utilisant des portes $C^nX$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "fa5951d0",
   "metadata": {},
   "outputs": [],
   "source": [
    "def nor_gate(n):\n",
    "    \"Construit un circuit à n+1 qubits qui simule n-OR avec des portes C^nX\"\n",
    "    pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4a07929d",
   "metadata": {},
   "source": [
    "### 3.5  Il faut sortir de la salle maintenant... On ferme... (BONUS du BONUS du BONUS)\n",
    "\n",
    "L'article de référence pour cette partie du TP date de 1995. Depuis, de l'eau a coulé sous les ponts. Si vous voulez comment simuler des $C^nX$ de manière plus efficace, nous vous recommandons deux lectures :\n",
    " - [Constructing Large Controlled Nots](https://algassert.com/circuits/2015/06/05/Constructing-Large-Controlled-Nots.html), un article de blog en 3 parties de C. Gidney, très pédagogique, sur la simulation avec un nombre linéaires de portes de Toffoli ;\n",
    " - [Polylogarithmic-depth controlled-NOT gates without ancilla qubits](https://arxiv.org/pdf/2312.13206) un article de 2024 paru dans *Nature Communications **15**, 5886 (2024)* de B. Claudon *et al.* qui propose une construction encore plus efficace."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d33d4ba7",
   "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.9.20"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}