{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit\n",
    "from qiskit import Aer, execute\n",
    "from qiskit.tools.visualization import plot_histogram"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Half adder\n",
    "# input qubits: a, b\n",
    "# output qubits: s (sum) and cout (carry-out)\n",
    "def halfadd(circ, a, b, s, cout) :\n",
    "    circ.cx(a, s)\n",
    "    circ.cx(b, s)\n",
    "    circ.ccx(a, b, cout)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create registers and circuit\n",
    "a = QuantumRegister(1, 'a')  # input\n",
    "b = QuantumRegister(1, 'b')\n",
    "s = QuantumRegister(2, 'out')  # output\n",
    "qc = QuantumCircuit(a,b,s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<qiskit.circuit.instructionset.InstructionSet at 0x1fa81338d48>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# All combinations of input\n",
    "qc.h(a)\n",
    "qc.h(b)\n",
    "qc.barrier()\n",
    "# Build adder circuit\n",
    "halfadd(qc, a, b, s[0], s[1])\n",
    "qc.barrier()\n",
    "# Measure the sum\n",
    "m = ClassicalRegister(2, 'sum')\n",
    "qc.add_register(m)\n",
    "qc.measure(s,m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'00': 1022, '01': 2097, '10': 977}\n"
     ]
    }
   ],
   "source": [
    "# Simulate and show results\n",
    "backend = Aer.get_backend('qasm_simulator')\n",
    "job = execute(qc, backend, shots=4096)  # shots default = 1024\n",
    "result = job.result()\n",
    "print(result.get_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 659.792x325.08 with 1 Axes>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "qc.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot_histogram(result.get_counts())"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
