[Qp-l] IBM Quantum Experience chellenge
rakytap
rakytap at gmail.com
Thu May 14 17:30:36 CEST 2020
On 2020. 05. 09. 11:09, Istvan Csabai wrote:
> Jól látom, hogy a 4-es feladat végülis nem egy "arbitrary unitary" volt, hanem egy elég kevés kapuból összerakható? A kiírásban azt írták, hogy
> 1600-as score alatt fogadják el a megoldást, a nyertes pedig 45 volt ami kb. azt jelenti, hogy 4 CNOT + 5 single qubit. Maga az U mátrix szemre is
> elég szimmetrikusnak tűnt, a valós része:
>
> image.png
>
>
>
>
> On Sat, May 9, 2020 at 9:52 AM Zoltan Zimboras <zimboras at gmail.com <mailto:zimboras at gmail.com>> wrote:
>
>
> Gratulálok a badge-hez!
> Üdv, Cimbi
>
> On Sat, May 9, 2020 at 3:46 AM rakytap <rakytap at gmail.com <mailto:rakytap at gmail.com>> wrote:
>
> https://www.youracclaim.com/badges/b5d8b5e8-2d74-4d03-a12a-3bbfbac019a0/public_url
>
>
>
> On 2020. 05. 08. 15:35, Gábor Vattay wrote:
>> https://twitter.com/jaygambetta/status/1258750644191727616
>>
>> On Fri, May 8, 2020 at 10:54 AM Istvan Csabai <csabai at phys-gs.elte.hu <mailto:csabai at phys-gs.elte.hu>> wrote:
>>
>> Ugyanazt az U mátrixot adták mindenkinek? Machine learning szempontból érdekelne, hogy hogy értelmezhető a feladat.
>> Én nem csináltam semmit csak regisztráltam és benéztem, ezt az U-t adta:
>>
>> array([[-0.21338835+0.33838835j, -0.14016504-0.08838835j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> -0.08838835+0.14016504j, 0.33838835+0.21338835j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> 0.39016504+0.08838835j, -0.03661165+0.16161165j,
>> 0.16161165+0.03661165j, 0.08838835-0.39016504j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j],
>> [-0.14016504-0.08838835j, -0.21338835+0.33838835j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.33838835+0.21338835j, -0.08838835+0.14016504j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.03661165+0.16161165j, 0.39016504+0.08838835j,
>> 0.08838835-0.39016504j, 0.16161165+0.03661165j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j],
>> [ 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> -0.21338835+0.33838835j, -0.14016504-0.08838835j,
>> -0.08838835+0.14016504j, 0.33838835+0.21338835j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> 0.39016504+0.08838835j, -0.03661165+0.16161165j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> 0.16161165+0.03661165j, 0.08838835-0.39016504j],
>> [ 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.14016504-0.08838835j, -0.21338835+0.33838835j,
>> 0.33838835+0.21338835j, -0.08838835+0.14016504j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> -0.03661165+0.16161165j, 0.39016504+0.08838835j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.08838835-0.39016504j, 0.16161165+0.03661165j],
>> [ 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> -0.08838835+0.14016504j, 0.33838835+0.21338835j,
>> -0.21338835+0.33838835j, -0.14016504-0.08838835j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> 0.16161165+0.03661165j, 0.08838835-0.39016504j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> 0.39016504+0.08838835j, -0.03661165+0.16161165j],
>> [-0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.33838835+0.21338835j, -0.08838835+0.14016504j,
>> -0.14016504-0.08838835j, -0.21338835+0.33838835j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> 0.08838835-0.39016504j, 0.16161165+0.03661165j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.03661165+0.16161165j, 0.39016504+0.08838835j],
>> [-0.08838835+0.14016504j, 0.33838835+0.21338835j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> -0.21338835+0.33838835j, -0.14016504-0.08838835j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> 0.16161165+0.03661165j, 0.08838835-0.39016504j,
>> 0.39016504+0.08838835j, -0.03661165+0.16161165j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j],
>> [ 0.33838835+0.21338835j, -0.08838835+0.14016504j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.14016504-0.08838835j, -0.21338835+0.33838835j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.08838835-0.39016504j, 0.16161165+0.03661165j,
>> -0.03661165+0.16161165j, 0.39016504+0.08838835j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j],
>> [ 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> 0.39016504+0.08838835j, -0.03661165+0.16161165j,
>> 0.16161165+0.03661165j, 0.08838835-0.39016504j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> -0.21338835+0.33838835j, -0.14016504-0.08838835j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> -0.08838835+0.14016504j, 0.33838835+0.21338835j],
>> [ 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.03661165+0.16161165j, 0.39016504+0.08838835j,
>> 0.08838835-0.39016504j, 0.16161165+0.03661165j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> -0.14016504-0.08838835j, -0.21338835+0.33838835j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.33838835+0.21338835j, -0.08838835+0.14016504j],
>> [ 0.39016504+0.08838835j, -0.03661165+0.16161165j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> 0.16161165+0.03661165j, 0.08838835-0.39016504j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> -0.21338835+0.33838835j, -0.14016504-0.08838835j,
>> -0.08838835+0.14016504j, 0.33838835+0.21338835j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j],
>> [-0.03661165+0.16161165j, 0.39016504+0.08838835j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.08838835-0.39016504j, 0.16161165+0.03661165j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.14016504-0.08838835j, -0.21338835+0.33838835j,
>> 0.33838835+0.21338835j, -0.08838835+0.14016504j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j],
>> [ 0.16161165+0.03661165j, 0.08838835-0.39016504j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> 0.39016504+0.08838835j, -0.03661165+0.16161165j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> -0.08838835+0.14016504j, 0.33838835+0.21338835j,
>> -0.21338835+0.33838835j, -0.14016504-0.08838835j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j],
>> [ 0.08838835-0.39016504j, 0.16161165+0.03661165j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.03661165+0.16161165j, 0.39016504+0.08838835j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.33838835+0.21338835j, -0.08838835+0.14016504j,
>> -0.14016504-0.08838835j, -0.21338835+0.33838835j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j],
>> [ 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> 0.16161165+0.03661165j, 0.08838835-0.39016504j,
>> 0.39016504+0.08838835j, -0.03661165+0.16161165j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> -0.08838835+0.14016504j, 0.33838835+0.21338835j,
>> 0.08838835-0.03661165j, -0.08838835-0.21338835j,
>> 0.21338835-0.08838835j, 0.03661165+0.08838835j,
>> -0.21338835+0.33838835j, -0.14016504-0.08838835j],
>> [-0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.08838835-0.39016504j, 0.16161165+0.03661165j,
>> -0.03661165+0.16161165j, 0.39016504+0.08838835j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> 0.33838835+0.21338835j, -0.08838835+0.14016504j,
>> -0.08838835-0.21338835j, 0.08838835-0.03661165j,
>> 0.03661165+0.08838835j, 0.21338835-0.08838835j,
>> -0.14016504-0.08838835j, -0.21338835+0.33838835j]])
>>
>>
>> On Fri, May 8, 2020 at 9:50 AM rakytap <rakytap at gmail.com <mailto:rakytap at gmail.com>> wrote:
>>
>> Mármint jövő csütöztökön? :)
>>
>> On 2020. 05. 08. 0:58, Tamas Kozsik wrote:
>> > Péter, nagyon kíváncsi lennék arra, hogyan álltál neki. Lehetne erről
>> > beszélni jövő pénteken? Az első három feladat tényleg könnyű volt, de
>> > ez a negyedik... :)
>> >
>> > Tamás
>> >
>> > On Wed, 2020-05-06 at 14:00 -0400, Zoltan Zimboras wrote:
>> >>
>> >> On Wed, May 6, 2020 at 1:55 PM rakytap <rakytap at gmail.com <mailto:rakytap at gmail.com>> wrote:
>> >>> Köszi!
>> >>> Döcögősen, de valamennyire haladtam. Már van egy kapuköröm (y,z fotgatás, cnot), mely jól leképezi a |0000> és |0001>
>> állapotokat. Egyelőre hat kapuval kevesebbem van, mint a jelenlegi megoldás rekordernek, de van 2 olyan z forgatásom, mely nem
>> írható le pi többszöröseivel. Valószínűleg ezeket kell kiváltanom olyan forgatásokkal, melyek
>> >>> (i) a |0000> és |0001> bázison ugyanolyan hatású
>> >>> (ii) csakik pi/2, pi/3, pi/4 forgatásokból áll :)
>> >>>
>> >> Szuper, ez ígéretesnek hangzik!
>> >> C
>> >>
>> >>> Na még van 1.5 napom rá.
>> >>>
>> >>> Üdv. Pt
>> >>> On 2020. 05. 06. 10:18, Zoltan Zimboras wrote:
>> >>>> Szia!
>> >>>>
>> >>>> A Qiskit-hez nem rég fejlesztettek egy általános unitér felbontót (sőt iyometria felbontót) az isometry csomagon belül:
>> >>>> qiskit.extensions.quantum_initializer.isometry
>> >>>>
>> >>>> Próbáld ki azt! Ha nem menne, írj. (Kb délután 2-től vagyok elérhető.)
>> >>>>
>> >>>> Üdv,
>> >>>> Cimbi
>> >>>>
>> >>>>
>> >>>> On Mon, May 4, 2020 at 5:39 PM rakytap <rakytap at gmail.com <mailto:rakytap at gmail.com>> wrote:
>> >>>>> Adnak egy db 16x16-os unitér mátrixot és azt kell jól megközelíteni minél kevesebb CNOT kapu felhasználásával :)
>> >>>>> On 2020. 05. 04. 17:32, Zoltan Zimboras wrote:
>> >>>>>> Szia!
>> >>>>>>
>> >>>>>> A 3-as is egy nagyon egyszeru protokoll, tuti gyorsan megy majd.
>> >>>>>> A 4-est viszont nem is ertem, hogy pontosan hogyan kepzelik....
>> >>>>>>
>> >>>>>> Udv,
>> >>>>>> Cimbi
>> >>>>>>
>> >>>>>> On Mon, May 4, 2020 at 5:27 PM rakytap <rakytap at gmail.com <mailto:rakytap at gmail.com>> wrote:
>> >>>>>>> Sziasztok!
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Sokerült átmenni a 2-es chellengen is, ez sem volt túl nehéz.
>> >>>>>>>
>> >>>>>>> A 3. és 4. kihívások már igényesebbnek néznek ki:
>> >>>>>>>
>> >>>>>>> 3: This third exercise is about BB84, a cryptography protocol developed in 1984 by one of our most famous IBMers, Charles
>> Bennett, together with his
>> >>>>>>> colleague, Gilles Brassard. The goal of this protocol is to create a secret key between two parties, Alice and Bob, that
>> can then be used by both
>> >>>>>>> parties to encrypt and decrypt a hidden message, respectively.
>> >>>>>>> In this exercise we will guide you through the different steps of the protocol to create a secret key, that can then be
>> used to decrypt a encrypted
>> >>>>>>> message.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> 4:The fourth exercise is supposed to puzzle even the quantum experts, so don’t worry if you cannot solve it! If you can,
>> hats off to you!
>> >>>>>>> We know that single-qubit rotations and CNOT gates constitute a universal gate set. However, there is no efficient
>> algorithm known so far that gives
>> >>>>>>> us a good decomposition. Your task is to find such a decomposition.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Üdv. Pt
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On 2020. 04. 29. 12:06, Tamas Kozsik wrote:
>> >>>>>>>> Sziasztok!
>> >>>>>>>>
>> >>>>>>>> 16:30-tól Teamsen.
>> >>>>>>>> Beszéljük meg holnap, szerintem jó lenne kipróbálni magunkat a
>> >>>>>>>> challengen. :)
>> >>>>>>>>
>> >>>>>>>> Tamás
>> >>>>>>>>
>> >>>>>>>> On Wed, 2020-04-29 at 12:04 +0200, Gábor Vattay wrote:
>> >>>>>>>>> Sziasztok,
>> >>>>>>>>>
>> >>>>>>>>> Mikor lesz holnap és min?
>> >>>>>>>>>
>> >>>>>>>>> Gábor
>> >>>>>>>>> ----------------------------------------------------------------------
>> >>>>>>>>> Gábor Vattay This is my private email account. Any views
>> >>>>>>>>> or opinions in this email are solely those of the author.
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> On Wed, Apr 29, 2020 at 11:55 AM Gábor Vattay <vattay at caesar.elte.hu <mailto:vattay at caesar.elte.hu>> wrote:
>> >>>>>>>>>> Sziasztok,
>> >>>>>>>>>>
>> >>>>>>>>>> Mikor lesz holnap és min?
>> >>>>>>>>>>
>> >>>>>>>>>> Gábor
>> >>>>>>>>>>
>> >>>>>>>>>> On Wed, Apr 29, 2020 at 11:43 AM Zoltan Zimboras <zimboras at gmail.com <mailto:zimboras at gmail.com>> wrote:
>> >>>>>>>>>>> Szerintem a holnapi találkozón lenne érdemes erről a "Qiskit challange"-ről beszélni.
>> >>>>>>>>>>> Holnap egyébként Koniorcyzk Mátyás fog beszélni, az előadásánal címe:
>> >>>>>>>>>>> "0-1 programozás adiabatikus kvantumszámítógépen".
>> >>>>>>>>>>>
>> >>>>>>>>>>> Üdv,
>> >>>>>>>>>>> Cimbi
>> >>>>>>>>>>>
>> >>>>>>>>>>> On Wed, Apr 29, 2020 at 5:38 AM Zoltan Zimboras <zimboras at gmail.com <mailto:zimboras at gmail.com>> wrote:
>> >>>>>>>>>>>> Sziasztok!
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Ez érdekes, és engem is érdekel. De túl sok infót nem adnak...
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Üdv,
>> >>>>>>>>>>>> Cimbi
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> On Wed, Apr 29, 2020 at 5:06 AM Tamas Kozsik <kto at elte.hu <mailto:kto at elte.hu>> wrote:
>> >>>>>>>>>>>>> Én is!
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> Tamás
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> On Wed, 2020-04-29 at 09:51 +0200, rakytap wrote:
>> >>>>>>>>>>>>>> Sziasztok!
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Ebbe nem akarunk szervezetten bekapcsolódni? Én benne lennék:
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> https://quantum-computing.ibm.com/challenges
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Üdv. Pt
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> _______________________________________________
>> >>>>>>>>>>>>>> Qp-l mailing list
>> >>>>>>>>>>>>>> Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
>> >>>>>>>>>>>>>> https://plc.inf.elte.hu/mailman/listinfo/qp-l
>> >>>>>>>>>>>>> _______________________________________________
>> >>>>>>>>>>>>> Qp-l mailing list
>> >>>>>>>>>>>>> Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
>> >>>>>>>>>>>>> https://plc.inf.elte.hu/mailman/listinfo/qp-l
>> >>>>>>>>>>> _______________________________________________
>> >>>>>>>>>>> Qp-l mailing list
>> >>>>>>>>>>> Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
>> >>>>>>>>>>> https://plc.inf.elte.hu/mailman/listinfo/qp-l
>> >>>>>>>> _______________________________________________
>> >>>>>>>> Qp-l mailing list
>> >>>>>>>> Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
>> >>>>>>>> https://plc.inf.elte.hu/mailman/listinfo/qp-l
>> >>>>>>> _______________________________________________
>> >>>>>>> Qp-l mailing list
>> >>>>>>> Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
>> >>>>>>> https://plc.inf.elte.hu/mailman/listinfo/qp-l
>> >>>>>>>
>> >> _______________________________________________
>> >> Qp-l mailing list
>> >> Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
>> >> https://plc.inf.elte.hu/mailman/listinfo/qp-l
>> > _______________________________________________
>> > Qp-l mailing list
>> > Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
>> > https://plc.inf.elte.hu/mailman/listinfo/qp-l
>> _______________________________________________
>> Qp-l mailing list
>> Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
>> https://plc.inf.elte.hu/mailman/listinfo/qp-l
>>
>> _______________________________________________
>> Qp-l mailing list
>> Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
>> https://plc.inf.elte.hu/mailman/listinfo/qp-l
>>
> _______________________________________________
> Qp-l mailing list
> Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
> https://plc.inf.elte.hu/mailman/listinfo/qp-l
>
> _______________________________________________
> Qp-l mailing list
> Qp-l at plc.inf.elte.hu <mailto:Qp-l at plc.inf.elte.hu>
> https://plc.inf.elte.hu/mailman/listinfo/qp-l
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://plc.inf.elte.hu/pipermail/qp-l/attachments/20200514/4d8255e3/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 10728 bytes
Desc: not available
URL: <https://plc.inf.elte.hu/pipermail/qp-l/attachments/20200514/4d8255e3/attachment-0001.png>
-------------- next part --------------
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exercise 4: Circuit Decomposition\n",
"Wow! If you managed to solve the first three exercises, congratulations! The fourth problem is supposed to puzzle even the quantum experts among you, so don’t worry if you cannot solve it. If you can, hats off to you!\n",
"\n",
"You may recall from your quantum mechanics course that quantum theory is unitary. Therefore, the evolution of any (closed) system can be described by a unitary. But given an arbitrary unitary, can you actually implement it on your quantum computer?\n",
"\n",
"**\"A set of quantum gates is said to be universal if any unitary transformation of the quantum data can be efficiently approximated arbitrarily well as a sequence of gates in the set.\"** (https://qiskit.org/textbook/ch-algorithms/defining-quantum-circuits.html)\n",
"\n",
"Every gate you run on the IBM Quantum Experience is transpiled into single qubit rotations and CNOT (CX) gates. We know that these constitute a universal gate set, which implies that any unitary can be implemented using only these gates. However, in general it is not easy to find a good decomposition for an arbitrary unitary. Your task is to find such a decomposition.\n",
"\n",
"You are given the following unitary:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"U has shape (16, 16)\n"
]
}
],
"source": [
"from may4_challenge.ex4 import get_unitary\n",
"U = get_unitary()\n",
"#print(U)\n",
"print(\"U has shape\", U.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### What circuit would make such a complicated unitary?\n",
"\n",
"Is there some symmetry, or is it random? We just updated Qiskit with the introduction of a quantum circuit library (https://github.com/Qiskit/qiskit-terra/tree/master/qiskit/circuit/library). This library gives users access to a rich set of well-studied circuit families, instances of which can be used as benchmarks (quantum volume), as building blocks in building more complex circuits (adders), or as tools to explore quantum computational advantage over classical computation (instantaneous quantum polynomial complexity circuits)."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'U' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-3-cc760e9e54c6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mmath\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0meigvals\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mLA\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meig\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mU\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0meigvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'U' is not defined"
]
}
],
"source": [
"from qiskit import QuantumCircuit\n",
"from may4_challenge.ex4 import check_circuit, submit_circuit\n",
"from numpy import linalg as LA\n",
"from numpy import diag\n",
"from math import pi\n",
"\n",
"eigvals, v = LA.eig(U)\n",
"print(eigvals)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Using only single qubit rotations and CNOT gates, find a quantum circuit that approximates that unitary $U$ by a unitary $V$ up to an error $\\varepsilon = 0.01$, such that $\\lVert U - V\\rVert_2 \\leq \\varepsilon$ !** \n",
"\n",
"Note that the norm we are using here is the spectral norm, $\\qquad \\lVert A \\rVert_2 = \\max_{\\lVert \\psi \\rVert_2= 1} \\lVert A \\psi \\rVert$.\n",
"\n",
"This can be seen as the largest scaling factor that the matrix $A$ has on any initial (normalized) state $\\psi$. One can show that this norm corresponds to the largest singular value of $A$, i.e., the square root of the largest eigenvalue of the matrix $A^\\dagger A$, where $A^{\\dagger}$ denotes the conjugate transpose of $A$.\n",
"\n",
"**When you submit a circuit, we remove the global phase of the corresponding unitary $V$ before comparing it with $U$ using the spectral norm. For example, if you submit a circuit that generates $V = \\text{e}^{i\\theta}U$, we remove the global phase $\\text{e}^{i\\theta}$ from $V$ before computing the norm, and you will have a successful submission. As a result, you do not have to worry about matching the desired unitary, $U$, up to a global phase.**\n",
"\n",
"As the single-qubit gates have a much higher fidelity than the two-qubit gates, we will look at the number of CNOT-gates, $n_{cx}$, and the number of u3-gates, $n_{u3}$, to determine the cost of your decomposition as \n",
"\n",
"$$\n",
"\\qquad \\text{cost} = 10 \\cdot n_{cx} + n_{u3}\n",
"$$\n",
"\n",
"Try to optimize the cost of your decomposition. \n",
"\n",
"**Note that you will need to ensure that your circuit is composed only of $u3$ and $cx$ gates. The exercise is considered correctly solved if your cost is smaller than 1600.**\n",
"\n",
"---\n",
"For useful tips to complete this exercise as well as pointers for communicating with other participants and asking questions, please take a look at the following [repository](https://github.com/qiskit-community/may4_challenge_exercises). You will also find a copy of these exercises, so feel free to edit and experiment with these notebooks.\n",
"\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABQUAAAG5CAYAAAA3R1IdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzde3xU9Z3/8fdM7lxDCCRcYwIJkEioCSoXMYCsItqLbVGitZXSBxbRrrr423Z9UPFHy7bKsm5du15+3bJrNVQottTSWgUSRUQJIIIogQQSArlBIJAQQi7z+2NMICGXSXLmnJk5r+fjkQfhzHe+88n3nO853/OZ7znH4XK5XAIAAAAAAABgG06rAwAAAAAAAABgLpKCAAAAAAAAgM2QFAQAAAAAAABshqQgAAAAAAAAYDMkBQEAAAAAAACbISkIAAAAAAAA2AxJQQAAAAAAAMBmSAoCAAAAAAAANkNSEAAAAAAAALAZkoIAAAAAAACAzZAUBAAAAAAAAGyGpCAAAAAAAABgMyQFAQAAAAAAAJshKQgAAAAAAADYDElBAAAAAAAAwGZICgIAAAAAAAA2Q1IQAAAAAAAAsBmSggAAAAAAAIDNkBQEAAAAAAAAbIakIAAAAAAAAGAzJAUBAAAAAAAAmyEpCAAAAAAAANgMSUEAAAAAAADAZkgKAgAAAAAAADZDUhAAAAAAAACwGZKCAAAAAAAAgM2QFAQAAAAAAABsJtjqAOCb6p/IsjoE2wt5NtPqEEwXqNudHdcl0BH6OeD7fL2fBlJ/o60BAFZipiAAAAAAAABgMyQFAQAAAAAAAJvh8mEAAPxUk0uqOCedOCNduCQ5HVJUP2lUlNQ3zOroAHupuiAdr5SqaiW5pH7h0sgoKaqv5HBYHR0AAMDVSAoCAOBnTldLH+RJHxVINXXtlxk9WLopSbouTgoJMjc+wC5qL0kfF0gfHJbKz7VfZlAfaVqiNGWs1D/c3PgAAAA6w+XD8GvlNVUKXX2v9pYda7W8sKpCoavv1eenT1gTGHwG2wgCSWOT9M4BadWfpa2fd5wQlKSi09LrH0rPbpaOnTIvRivQz2GFA8Xuvvjm7o4TgpJ05oL0l33Szze5E4gul3kxmo2+aB7aGgBgBJKC8Gu5pQWKCA7VxCGjWi3fVZqv/qERGhc1zKLI4CvYRhAoLtZLL251Jxcamzx/X/k56T/elnYc9l5sVqOfw0wul7Rpr/T/cqTzFz1/38V6d6L+9Z3d68P+hL5oHtoaAGAEkoLwa7vLCjRpaJyCna2vjcstyVdaTLycDjZxu2MbQSBoaJReyZYOl/Xs/S5Jb3wsfZRvZFS+g34OM23eJ2092PP37yqQfv9RYM4YpC+ah7YGABiBowX82u7SAk2OTbhq+a7SfKW3sxz2wzaCQPD2fim/vPMyz93n/unM+l3uB5MEGvo5zHKoRHrns87LeNIXPy6Qdh8zLCyfQV80D20NADACDxqBX9tTdlTzx09ttazJ1aS9Zce05LpbVVZTpfl/WqNQZ7BqGy5p5Yx7NDvuWouihRXYRuDvTp6RtvRiVtKVGhqldR9Jj/yDMfX5Cvo5zNDcf4zyh1xpwvDAelI4fdE8tDUAwAgkBa/Q1NSkNWvW6KWXXtLx48c1btw4/epXv9LixYuVkZGhl19+2eoQcYUT5ytVWnNWaTHxrZbvKy9Udf1F3TgsUdER/bVtwVMKcjpVcLZM9/35eX14/88sihhmYxtBIMg5JDUZeJlhfrn7ISSjBxtXp5Xo5zDLJ0XSmRrj6qu95L6kf3aycXVaib5oHtoaAGAULh++wqJFi7Ry5Uo9+OCD+utf/6q7775bmZmZKigoUHp6utXhoY0T1ZWSpMiwPq2Wr/t8h24cNlajBgxWkNOpIKd7M6+qu6CJQ0abHieswzYCf3ex3juXGAbSQ0fo5zDLh0eMr5O+SF/sCdoaAGAUkoJfysrK0tq1a7Vp0yYtW7ZMs2bN0pNPPqmpU6eqoaFBaWlpVoeINsZHDdfAsD569uNNOnuxRpW11Xr5k3f14ifv6Oc3Z7aUO3q2XDOzVuiODb/Q1xMnWxgxzMY2An93/LT7kkWjFVQYX6dV6OcwQ0OjdOyU8fWeqpaqao2v1wr0RfPQ1gAAo3D58JdWrVqluXPnKiMjo9XysWPHKiQkRKmpqZKkY8eO6Xvf+55KSkoUFhamX//615oxY4YVIdvegLA++uNdy/Qv761T/EsPq09wmCYNjdNb3/pnzRg1oaVcfORQZWeuUMHZMt32xs91xxgSvHbBNgJ/V3zGO/VWnHPPQgwP8U79ZqKfwwylVVJjk3fqLj4tDRzpnbrNRF80D20NADAKSUFJxcXFOnDggB577LGrXisqKlJKSorCwtx3gX7wwQd1zz336KGHHtKOHTs0f/58HT16VKGhoYbE4nA4DKmnty4te93qEDwyfeR45dy7osPX6xrqFRbsPusdEBqhviHhJkXWe76yLZjJG9udL2wjdlyXMMb0e/5Vk7/641bLunqqaUevP/ra5d9dkoYOv0bnTxX2LsAeoJ/DH42eeKvu+ue3Wy0zoi9K0t33LdTB99b2PDgv6Gk/NasvBlJ/o60BAEZzuTy/ITlJQbmTgpIUGxvbanltba1ycnJ0++23S5JOnTql7du3a9OmTZKkadOmafjw4dq2bZtuu+02c4OGR3JL87V8+xsKcjhV39SgNbO/a3VI8DFsI/Bl3Tmgd79yL0178kH0c/SaF/uiV/u5j6Evmoe2BgB4gqSgpOjoaElSXl6e5s2b17L8mWeeUUlJSctDRoqKihQTE9Mya1CS4uPjVVho3EwLXxkY1j+RZXUIhpg+cry2Lvip1WH0iK9sC2ayYrszYxux47qEMd4/JP0ht/WytrOMmjXPSuro9Ss5HdKp0iKFWjAKoJ/DH5VWSb94q/UyI/qiJL35+7UaN2xtj2PzBm/1U6P6YiD1N9oaAOCJmTNnSpKys7O7LNMdJAUlJSQkKDU1VatWrVJUVJRGjBihDRs2aPPmzZLEk4cBAJYYGeWdemMjZUlCEPBXQ/u7+8ylBuPr9lY/BwAA6ApPH5bkdDq1fv16paSkaMmSJVq4cKGio6O1dOlSBQUFtTxkZPTo0SorK1NdXV3Le48ePaq4uDirQgcABLCRUVKEMbesbSUpxvg6gUDmdEqJXug3IwdJfcO6LgcAAOANJAW/lJSUpG3btqmmpkZFRUVauXKl9u/fr+TkZEVEREhyX2Y8ffp0/eY3v5Ek7dixQydOnNCsWbOsDB0AEKBCgqQpY4yvd3qi8XUCgc4b/WZ6kvF1AgAAeIqLhzqRm5urKVOmtFr24osv6oEHHtBzzz2n0NBQZWVlGfbkYbs6cb5SP3z7FVVduiCnw6HJsWO0etb9hta/ZtdbumfCNC3b9qrhn+Ht+tHasm2vandpga6LuUZrZn+v1+W6g3UNK9w8TvrgsHGXLX5ltDRkgDF1+YKeHEOs3I/Af40f5p69W1xpTH2D+krp1xhTlxWaj4n/9uUDLP4jd7PePPyxsjNXdPge+p5nzGgnb4+/AQD+gZmCHaiurlZeXp7S0tJaLU9ISNB7772nvLw8HThwQBkZGRZFGDi2FO5XZvJ0/f3uJ5WduULlF6q0v6LI0PpviZuo0QOivfIZ3q4fl+0tO6rqSxe1LfMpXWpsUG5Jfq/KdRfrGlYY1Ff62nXG1NU3TPrW9cbU5Su6ewyxej8C/+V0SvdOkYIcxtSXOcW/7+3ZfEyUpLqGeu0r7/zBe/Q9z5jVTt4efwMA/IMfD0W8q1+/fmpsbLQ6jICSU3RQ8/+0RqlD4nSsqkKpQ+O08a5/0nvHP9dztzyg8GD3jMsQZ7CCHN3PV3dVf7/Q8JayPfkMb9ePrn108kjLCcjsuInaWXJYk4ddfW2lp+U60976jgrvy7qGJaYlSoWnpF1HOy7T1ZNOg5zS926S+od3Xs5XGXUMMXM/gsAzfJA0/0Zp3c6Oy3jy1OF5qVJSrHFxeVtnx0RJ+u3+bN1/7c16+oP1HdZB3/OM0e3k7fE3AMC/seeHaWaMGq/rh43RuwuWa8ao8Xp+zkK5XC7V1Ne1JFk+rSjSqQvnlBw90iv19+YzvF0/una2rkYDwtz3+BwYFqGzFy/0qlxn2lvfrGtYxemQFkyRpo3t2fvDQ6TFM/0rCdGWUccQM/cjCExTxrhn+QX1YBTtkHTnV6RbJxoelld1dkysb2xQzvGDmjU6pdM66HueMbqdvD3+BgD4N2YKwnClNWf1nT8/32pZTN+BevqmuxU/cKgkqfh8pUb0j9In5ceUOtT99ObK2mo9umWtXv/qj7xSv6ef4e360XMDw/roXF2tJOlcXa0iw/v0qlxH6/q1r/5IBWfLW63vitpzrGtYKsgp3X2jNH64tP5j6fxFz96XPNz9vsj2u4HP8fYxxOj9COzpxjHS6MHS6x9Kxz28x+DQAe5kYvwQ78bmDZ0dE187uF0LJkzrsg76nmeMbqe2666n+04AQGAiKQjDxfaN1LsLll+1fNORXCUPHqnGpiY5He4b8mw5tl9z4q5VQ1OjHtj8gn6Zca9i+0a2vKehqVGna6sV03dgr+pvrqvtZ3i7fhhryvBEvbJvi+aPn6KthQf03Wtvbncdelquo3UtSQdPF7da36xr+IrUUe4HHuwtlHYekYoqpcam1mX6hUkThks3JbkTFw6D7oFmBm8fQ3qzHwGuNCxSemyulFcqfZAnHS6TLta3LhMaLCUMcd8CIGVEz2YX+oLOjomHKkv0acUxvbJviw6eKtYLe97Wg1+ZQ9/rIaPHOm3XndT1vhMAYB9+OjSBPzp4qljJ0SNV11iv8gvnVFJ9RrvLjio9NkEbDn2k3NIC/SQnS3PWrdTOk3mSpGNVFXpq+xu9rl9Su5/h7fphrOti4hUeHKJZWU8ryOnU9cPGtrsOPS3Xmbbre2vRAdY1fEZosHum0j/eJv3ybumJeZdfW3GXtPJb0n3TpLho/0oIdsaoY0hv9iNAW06HO0m/KENaNV968muXX/vxndIv5ks/nO1O5vtrQlDq/Jj4rxmZ+su3f6K3vv1jJUeP1NK02+h7vWD0WKcn+04AgH04XC6Xy+og4Hvqn8gy5XPWf7FT88dP6fD1jXkfa1B43y7vU+Or9fdGyLOZXqnXl/Vku/N0HVq5ru24LmG+5ocbPHeftXF0xcjji1H7+N7uHyT6OS7zl77Yma76qdV9L5D6myf7RKPbsztjmkBqawDwZzNnzpQkZWdn96pMW1w+DEt1NSD5ZtINfl0/vM/Tdci6BgKPUfv43u4fALuh75nL6PZkTAMAaObHFzIAAAAAAAAA6AlmCqJdXCoAK7DdAYGPfg74PvqpeWhrAICVmCkIAAAAAAAA2AxJQQAAAAAAAMBmSAoCAAAAAAAANkNSEAAAAAAAALAZkoIAAAAAAACAzZAUBAAAAAAAAGyGpCAAAAAAAABgMyQFAQAAAAAAAJshKQgAAAAAAADYDElBAAAAAAAAwGZICgIAAAAAAAA2Q1IQAAAAAAAAsBmSggAAAAAAAIDNkBQEAAAAAAAAbIakIAAAAAAAAGAzwVYHAHSk/oksyz475NlMyz7b31m53gKRP26LgbgN+ON6ADrj6/2UPodA4+t9rifop8Zh+wBgFWYKAgAAAAAAADZDUhAAAAAAAACwGS4fBgAAfu/CJWn3USm/XDpeKZ2vleSQBkRIo6KkxBgp7RopPMTqSIHA1tgkHSiWDp6Ujp+WTldLTS6pT6g0YpB0TbR0fYI0qK/VkQKAMVwu6XCZ9GmRVFQplZ9z7wvDgqVhkdLowdLkePfvgK9hpiD8WnlNlUJX36u9ZcdaLS+sqlDo6nv1+ekT1gQGn8E24v9Yh+hMXYP05m7pqY3SH3KlT4rcSYhLjdKlBunUeWlvofTGx+4yb30i1TdaHbX/oj+iIy6XtOOw9H//KP32femjfOnkWXcfrW+UqmrdicLNn7rLrH1fOnvB6qj9F30RnWH7MM9nxdK/viX9eou0/bBUdFq6WO/e71XXuZOFWw5Kv/yL9MK7UslZqyMGWmOmIPxabmmBIoJDNXHIqFbLd5Xmq39ohMZFDbMoMvgKthH/xzpER4pOS/+z3Z0E9ERdg/TuZ9Knx6UHbpKGD/JufIGI/oj2VF+U/vcDKa/Us/IuuRP4h0qke26UvhLn1fACEn0RnWH78L76RvcXjrsKPH/P4TJp9V+lOyZJsyZIDof34gM8xUxB+LXdZQWaNDROwc6gVstzS/KVFhMvp4NN3O7YRvwf6xDtOVoh/ee7nicEr1R+Tnr+Hfdlxuge+iPaOn9R+tU7nicEr1RbL63dLu08YnxcgY6+iM6wfXhXfaP0Snb3EoLNGpukTXulP+91z7AGrMbeAH5td2mBJscmXLV8V2m+0ttZDvthG/F/rEO0VXVBejnbfXlwR567z/3Tkdp66eVtUk2d4eEFNPojrtTUJP13jjvR3pGu+qIk/f4jKb/M2NgCHX0RnWH78K71H3f+RYgn+72tn7tvswBYjaQg/NqesqNKjx3TalmTq0l7y45pcmyCymqqdPPrT2nOupWa/rvl2lp4wKJIYRW2Ef/HOsSVXC53AqH2Uu/rOn9R+sOu3tdjJ/RHXCnnkHT0VO/rcUl6faf7En94hr6IzrB9eM9nJ6SPezBDsD1v7pbO1BhTF9BT3FPwCk1NTVqzZo1eeuklHT9+XOPGjdOvfvUrLV68WBkZGXr55ZetDhFXOHG+UqU1Z5UWE99q+b7yQlXXX9SNwxIVHdFf2xY8pSCnUwVny3Tfn5/Xh/f/zKKIYTa2Ef/HOkRb+eXuhxUYZU+hNCvZ/YRidI7+iCtdrJf+9qlx9Z2ulj7Ik2YnG1dnoKIvdu7CJfdlnZ8ed2+nQ/pLU8dKibGS0wb3cGP78B6XS9q0x7j66hqkt/dLC6YYVyfQXSQFr7Bo0SJt3LhRy5cvV3p6unbs2KHMzExVVFTo8ccftzo8tHGi2n0zqMiwPq2Wr/t8h24cNlajBgxutbyq7oImDhltWnywHtuI/2Mdoq3tecbX+UEeA3JP0B9xpd1HjZ/Zt+OwNHOCPRI3vUFf7Njx09J/bXUnBpudPON+sE3KCOmBGVJIUMfvDwRsH95zpFwq6+R2CT2x+5j0tTSpT6ix9QKe4vLhL2VlZWnt2rXatGmTli1bplmzZunJJ5/U1KlT1dDQoLS0NKtDRBvjo4ZrYFgfPfvxJp29WKPK2mq9/Mm7evGTd/TzmzNbyh09W66ZWSt0x4Zf6OuJky2MGGZjG/F/rENcqbFJOnDC+Ho/Pc7Nvj1Bf8SV9h03vs5T1VLJWePrDTT0xfZVX3QnBNveXqJ59/7ZCWmDDW4ZwfbhPZ8WGV9nfaP0hYFXQADdxUzBL61atUpz585VRkZGq+Vjx45VSEiIUlNTJUk//elPtW7dOh05ckRvvPGGvv3tb1sRLiQNCOujP961TP/y3jrFv/Sw+gSHadLQOL31rX/WjFETWsrFRw5VduYKFZwt021v/Fx3jCHBaxdsI/6PdYgrlVZJDY3G13vhklRZIw3uZ3zdgYT+iGYul1Tspad3H6+URgzyTt2Bgr7Yvp35rWcItmdXgTQvVRrYp/Ny/oztw3uOe3G/l3aNd+oGukJSUFJxcbEOHDigxx577KrXioqKlJKSorCwMEnS3Llz9cADD+j73/++V2JxOLheotmlZa93WWb6yPHKuXdFh6/XNdQrLDhEkjQgNEJ9Q8I9+mzWQ895st7M5K1txCz+uC0avQ34wjr0h/Xwj79zz4Xwh1h7KvHG+Zr3yButlnX1dL+OXn/0tdb/T58+V4Wfvt2L6PxLT/upWf3Rn7djO/TFiP7RWvxfFa2WGdUXlz35S33w+x/3IjrfxLHR+zJ/tkdD4ibJ4ej4Yrgml3Tz15fq03d/bWJkXWP78A+L/+uUIvpfvvzaqP3e//vdn/SN9G/0MjrYhdF9i6Sg3ElBSYqNjW21vLa2Vjk5Obr99ttblk2bNs3U2NA7uaX5Wr79DQU5nKpvatCa2d+1OiT4GLYR/8c6tA9nsPduuBMUHOa1uu2E/mgPXu2LIfRFI9ixL4b1jew0IdhSrs9AE6LxbXbcPowQ5KV9H/s9WMnhcnEXnSNHjigxMVH//u//rkcffbRl+dNPP60VK1bohRde0EMPPdTqPTNnztTDDz/M5cNeVP9ElmWfHfJsZteF0C4r11sg8sdtMRC3AX9YD83fOnf1rbU/+/S49N/veVa2uR3afhvfkYdukZJiuy4XKHy9n/pDn+uIHfpi7SXpJ+s9K9vdvnjrtdK8ST2Ly5f5ep/rCV/rp8+/IxWUX76HYEe+M02aHN9FIZOxffiHn/5BOnex63Ld3e9NGi0tnNHzuGAPM2fOlCRlZ2f3qkxbzBSUlJCQoNTUVK1atUpRUVEaMWKENmzYoM2bN0uS0tPTLY4QAAAMj/TPuoFAExEqDeojnblgfN30RfTUlDFSfnnnZcKCpdRR5sSDwDNskHSuxAv1st+DhXj6sCSn06n169crJSVFS5Ys0cKFCxUdHa2lS5cqKCio5SEjAADAOoP7SX29cIXN4H5SP9+6nSjg80ZHe6feUYO7LgO057o4aVRU52XmTZJCmRaDHorz0v7JW/UCniAp+KWkpCRt27ZNNTU1Kioq0sqVK7V//34lJycrIiLC6vAAALA9h8M7l3z52mVkgD+43gv9JmEITwFHzwUHST+cLY0f1v5rX0+Tbh5nflwIHOle2O8NiLDX7Uvge0gKdiI3N/eqS4eXL1+ukSNH6sMPP9SDDz6okSNHKj8/36IIAQCwl5sSJSOfuRbklKaONbBCwCaShxufwJtBwga91DfMnRj8P/MuL5t/g7Tym9KsCe4vl4CeihkgjWsn6dwb0xLdYxHAKkye7kB1dbXy8vKuesDIypUrtXLlSouiQleWbXtVu0sLdF3MNVoz+3tWh4MeOnG+Umt2vaV7JkzTsm2vyulwaHLsGK2edb9f1N/8GT98+xVVXbrglfrtoift6Ol+gP2FfxoyQJqdLG05aEx9cydKkX2MqcvfmdF3mve//zb7u/qP3M168/DHys5c0cvIYQWnU/r29dJL24ypLylW+spoY+ryR1Yeu67sl5ICom8OH3T59+mJ1sVhBcZO3vXNdOnZzVJDU+/rGtJfmj2h9/UAvUFOugP9+vVTY2OjHnnkEatDgYf2lh1V9aWL2pb5lC41Nii3hBmc/mpL4X7dEjdRowdE6+93P6nszBUqv1Cl/RVFflF/82dkJk/3Wv120d129HQ/wP7Cv81NlUYM6rzMo691/dS/+Gh3ghHm9Z3m/W9dQ732lRcaETosNGF41wkXT/pin1BpwY32ncVl9bGruV9Kom8GAMZO3hUzUPrqdZ2X8WS/F+SU7p3KPS5hPTZB+IWcooOa/6c1Sh0Sp2NVFUodGqeNd/1TqzIfnTzSMqCZHTdRO0sOa/KwMT2uD+Zob11EhffVc7c8oH6hl+/8H+IMVpCj+99jWFH/xrv+Se8d/1zP3fKAwoNDe1W/XRjVjp7uB7qzv4DvCQmSfjhLemGLVFrVszpGRUk/mMklO82M7jtd9enf7s/W/dferKc/WO/Vvwve983J0oVL0t4e5pH6hEpLZktRNr6XoJnHrs7GRZLom36EsZN1MsZLNXXS3w/07P1BTumBm6T4IcbGBfQEQ2H4hRmjxuv6YWP07oLlmjFqvJ6fs/CqMmfrajQgzP1QmIFhETp78UKv6oM52lsXNfV1rRJ2n1YU6dSFc0qOHukX9btcrlaf0Zv67cKodvR0P9Cd/QV8U/8I6ZF/kNKv6f57p4yRls7xzpOM/ZXRfaezPh0WFKyc4wc1a3SKd/4YmCrIKd0/TbpjUveT7PHR0mO38cRhM49dnY2L6hsb6Jt+hLGTteZNcs/0Cw/p3vuG9JceniNNHOWduIDuYqYg/ELB2XLFDxwqSSo+X6kR/aOuKjMwrI/O1dVKks7V1SoyvOObRHlSH8zRdl1U1J5T6tC4ltcra6v16Ja1ev2rP+qwjtKas/rOn59vtSym70C99tUfmV7/iP5R+qT8WMtneFK/nXTUlk/fdLch7ejpfqA7+wv4rr5h0v3TpbQ49z0GCyo6L58UK92SbPxNwgOB0X2ns33jawe3a8GEaV74K2AVp1P6h2ula0dK7xyQ9h2XGju539bQAVLGOPdDfpxMUTC8//V0XETf9E2MnXzXDQnuscXfD0i7j0p1DR2XHRjhvt3CzAlcMgzfwuYIv3DwdLGSB49UY1OTnA6HGpoadbq2WjF9B7aUmTI8Ua/s26L546doa+EBfffam9st1159sE7bdbHl2H7NibtWktTQ1KgHNr+gX2bcq9i+kS3L2q7T2L6RenfBcp+oX1LLZ7RXv9111JabjuR2ux17sx9orxz8V8pI909plXSkTCqulHZ+eaujqWPdlwqPjXEnItC+3vSd9sp1tm/cmLdLn1Yc0yv7tujgqWK9sOdtLU27zfS/GcYbFil99ybpfK10qFQ6XinlfOF+Lf0aaWSUdE20+4fh12VG97+ejosOVZbQN30QYyffFtlHuvsG6WvXSV+USMdPX34Y2ldGux96M3qwlBjDLUvgm9gs4RcOnipWcvRI1TXWq/zCOe08eVhPbX+jVZnrYuIVHhyiWVlPK8jp1PXDxupYVcVV5dqrr6T6jFl/Ctpouy62Fh1QemyCJGnDoY+UW1qgn+Rkac66ldp5Mq/Ddeor9ZdUn9HusqNKj01ot360ryft2N668nQ/0F45+L/YgdJNSdKCKZeX3XOjNC2RhGBXetN32ivXWZ/+14xM/eXbP9Fb3/6xkqNHknQIQP0jpMnx0l3pl5fdP12aNcF9Dy0Sgq0Z3f8609m4iL7pXxg7+ZbwEHcS8MqHkDwwQ7r1Wmn8MBKC8F0Ol8vlsjoIoD31T2R1+NrGvI81KLxvl/c88bRcWyHPZnarPC7rbL15Yv0XOzV//JQOX+/pOjWrfk8+ozv8cVvs7TbQzKh1ZcQ69Yf10PyUu+fuszYOX0F7dM6Tfmp0H+vOvtEf+lxH2PZaoz3cuntsNOsY15sxixJ8p98AACAASURBVK/3U3/a9hg7BRZ/2vbgP2bOnClJys7O7lWZtrh8GH7pm0k3GFoOvqOrgWlv16m36/fkM+AZo9YV+wGgZ4zuY+wbAc+ZdYyjXwYWxk4AuoukIHyWnb9d8mesN7ANAL6PfgqYiz6HzrB9ALAKV7YDAAAAAAAANkNSEAAAAAAAALAZkoIAAAAAAACAzZAUBAAAAAAAAGyGpCAAAAAAAABgMyQFAQAAAAAAAJshKQgAAAAAAADYDElBAAAAAAAAwGZICgIAAAAAAAA2Q1IQAAAAAAAAsBmSggAAAAAAAIDNkBQEAAAAAAAAbIakIAAAAAAAAGAzJAUBAAAAAAAAmyEpCAAAAAAAANhMsNUBAB2pfyLLss8OeTbTss8GAMBsHHMBAIAZrBxzeMJu4xJmCgIAAAAAAAA2Q1IQAAAAAAAAsBmSggAAAAAAAIDNkBQEAAAAAAAAbIakIPxaeU2VQlffq71lx1otL6yqUOjqe/X56RPWBAYAQADiuAsAAKzAGMQ7SArCr+WWFigiOFQTh4xqtXxXab76h0ZoXNQwiyIDACDwcNwFAABWYAziHSQF4dd2lxVo0tA4BTuDWi3PLclXWky8nA42cQAAjMJxFwAAWIExiHfQavBru0sLNDk24arlu0rzld7OcgAA0HMcdwEAgBUYg3gHScErNDU1afXq1UpMTFR4eLgmTZqknJwcjRs3TosXL7Y6PLRjT9lRpceOabWsydWkvWXHNDk2QWU1Vbr59ac0Z91KTf/dcm0tPGBRpADgPSfPXP79wiXr4kDg47jbuaoLl38/dd66OAAA1qhvvPx7QbnkclkXS6BhDOIdwVYH4EsWLVqkjRs3avny5UpPT9eOHTuUmZmpiooKPf7441aHhzZOnK9Uac1ZpcXEt1q+r7xQ1fUXdeOwREVH9Ne2BU8pyOlUwdky3ffn5/Xh/T+zKGIAMFbRaWnDLve/zX76B+nGMdLX06RQjvIwEMfdjp2/6O6Lnx6/vOxnm6Txw6T5N0iD+1kXGwDA+5pc0pbPpG2fX172q3ek6H7S19Kk1FEdvxddYwziPZwufCkrK0tr165Vdna2MjIyJEmzZs3Snj17tHHjRqWlpVkcIdo6UV0pSYoM69Nq+brPd+jGYWM1asDgVsur6i5o4pDRpsUHAN5UeEp6/l2psbH18oYm6YPDUtk56YezpOCg9t8PdBfH3fbV1Em/+rt7ZmDbCSGHSqR/f1t6/DYpisQgAASsN3Ol9/OuXn66Wvrv96TvTJMmx1/9OjzDGMR7uHz4S6tWrdLcuXNbEoLNxo4dq5CQEKWmpurMmTO68847lZSUpEmTJunWW2/VkSNHLIoY46OGa2BYHz378SadvVijytpqvfzJu3rxk3f085szW8odPVuumVkrdMeGX+jriZMtjBgAjLNhlzsh2NFVKUfKpNxjZkaEQMdxt31bDkoV7SQEJfeymovS5n1mRwUAMEvR6fYTgtLlY8OGXdKlBtNCCjiMQbyHpKCk4uJiHThwQPPnz7/qtaKiIqWkpCgsLEwOh0OPPvqo8vLytG/fPt15551auHChBRFDkgaE9dEf71qm3aVHFf/Sw5r438v0x8O79Na3/lk3j5rQUi4+cqiyM1do+33/V49uWWtdwABgkOOV7p/OblPjkLS9gwEq0BMcd6/W2CR92MX3wy5JewrdMwoBAIFnx2H3uKszF+ulvYWmhBOQGIN4D5cPy50UlKTY2NhWy2tra5WTk6Pbb79dkhQZGak5c+a0vD5t2jQ988wzhsbicHS1O7GPS8te77LM9JHjlXPvig5fr2uoV1hwiCRpQGiE+oaEe/TZrAcAvmz89O/otiWvdlrGJelYaa0cjj6dlgtU//g7d8qU/blnPDnmSt457vrzOuo7aLh+8PyJLss1uaQxyTeorGCXCVH5FvoirMK2B7Pc/dQODUuc2mkZV1Ojli3/d23PesKkqHyXp2OOtrx17t+Wr+8zjI6PpKCk6OhoSVJeXp7mzZvXsvyZZ55RSUmJ0tPT233fc889p2984xumxIieyS3N1/LtbyjI4VR9U4PWzP6u1SEBQK81Nnj2iGFPywFGsdtxt6kbfaypsd6LkQAArNLYUCeXq0kORycXYjocampkXOZNdhuDGIWkoKSEhASlpqZq1apVioqK0ogRI7RhwwZt3rxZktpNCj799NM6cuSItm7damgsLp5Z3qL+iaxe1zF95HhtXfDTbr+P9QDAl52/KD210T37qCMOSVMnDNR/2XR/9uhr7n/Zn3vGiGOu1LPjrj+vI5dLWv1X6eSZzi/n7x8ulRTsVZANb9xDX4RV2PZglnc/k976pPMyDodT//v8v2jM7//FnKB8mFFjjrZ6eu7flq/uM2bOnClJys7O7rJMd9hwaHI1p9Op9evXKyUlRUuWLNHChQsVHR2tpUuXKigoSKmpqa3K/+xnP9Nbb72lv/3tb+rTx56XZQEArNM/XErv4gl2LkkzxpkSDmBbDoeUMb7zhKAk3TxOtkwIAoAdTBkjhQR1fF9Bh6ThkVLCEDOjAjzDTMEvJSUladu2ba2W3X///UpOTlZERETLsqefflqbN2/WO++8o8jISLPDBABAkvStyVJ5lVR42j3YbE5KNP/+zclSPINPwOuuj3c/+Of9Q+4kYfMEg+bfvzJamp1sbYwAAO/pFy59/2bpNznuB1C1/aJoYB/36z5+qzrYFEnBTuTm5mrKlCkt///ss8+0YsUKjRkzptW0zE8+6WKuMAAABgsPkZbOkT7Kdz9luPy8FOyUkkdIGeOkhKFWRwjYg8MhfTNdSoqR3s+T8svcJ4SjBkszkqS0ayQnJ4IAENAmDJeemCe9d0jafcz9tOGBEdLUROmmRHfiEPBFJAU7UF1drby8PD300EMty1JSUnz2+nK4Ldv2qnaXFui6mGu0Zvb3rA4HALwqNNh9ifCMce4ZSXwDDTNxzL3M4ZAmjnL/XDlTEABgHzEDpfk3uH8Yl/XOifOVWrPrLd0zYZqWbXtVTodDk2PHaPWs+zt8j6fjEsYvrXF3kw7069dPjY2NeuSRR6wOBR7aW3ZU1ZcualvmU7rU2KDcknyrQwIA0zDwhJk45nbM4aA/AoDdcRzonS2F+3VL3ESNHhCtv9/9pLIzV6j8QpX2VxS1W97TcQnjl6sxUxB+IafooOb/aY1Sh8TpWFWFUofGaeNd/9SqzEcnj+iWuImSpNlxE7Wz5LAmDxvT4/oAALAjjrkAAMAs7Y0TosL76rlbHlC/0MvXXYc4gxXkaH9em6fjku6MX+yCmYLwCzNGjdf1w8bo3QXLNWPUeD0/Z+FVZc7W1WhAmPuhMAPDInT24oVe1QcAgB1xzAUAAGZpb5xQU1/XKiH4aUWRTl04p+Toke3W4em4pDvjF7sgKQi/UHC2XPED3XfNLz5fqRH9o64qMzCsj87V1UqSztXVKjK8T6/qAwDAjjjmAgAAs7QdJ1TUnlPq0LiW1ytrq/XolrV6ae7iDuvwdFzSnfGLXZAUhF84eLpYyYNHqrGpSU6HQw1NjSqrqWpVZsrwRG0rOiBJ2lp4QDcOG9tuufbqAwAAbhxzAQCAWdqOE7Yc2685cddKkhqaGvXA5hf0y4x7Fds3smVZT8cl7ZWzO5KC8AsHTxUrOXqk6hrrVX7hnHaePKyntr/Rqsx1MfEKDw7RrKynFeR06vphY3WsquKqcu3VV1J9xqw/BQAAn8YxFwAAmKXtOGFr0QGlxyZIkjYc+ki5pQX6SU6W5qxbqZ0n89odb3g6LmmvnN05XC6Xy+oggPbUP5HV4Wsb8z7WoPC+mjU6pdM6PC3XVsizmd0qDwDwLY++5v73ufusjcNfcMyFt9AXYRW2PcA3dTbmkKT1X+zU/PFTOnzdruOSmTNnSpKys7N7VaYtnj4Mv/TNpBsMLQcAANrHMRcAAJils4SgxLjEaFw+DAAAAAAAANgMMwXhs3x12i4AAIGGYy4AADADYw7fwkxBAAAAAAAAwGZICgIAAAAAAAA2Q1IQAAAAAAAAsBmSggAAAAAAAIDNkBQEAAAAAAAAbIakIAAAAAAAAGAzJAUBAAAAAAAAmyEpCAAAAAAAANgMSUEAAAAAAADAZkgKAgAAAAAAADZDUhAAAAAAAACwGZKCAAAAAAAAgM2QFAQAAAAAAABshqQgAAAAAAAAYDMkBQEAAAAAAACbCbY6AKAj9U9kWfbZIc9mWvbZAAAAACBZe07UlUA6Z/LldpZoazMFUlt7gpmCAAAAAAAAgM2QFAQAAAAABKTGJqsjAADfxeXDAAAAAAC/Vtcg7TkmHSiWjldeXv7EOilmoBQ3WLohQYofIjkcloUJAD6FmYLwa+U1VQpdfa/2lh1rtbywqkKhq+/V56dPWBMYAAAAAK9rapK2fS49tVH6/UfSZyekc7VXvO6SSs5KO/OlX70j/dvfpKLT1sVrBs6RzENbm4e29g6SgvBruaUFiggO1cQho1ot31War/6hERoXNcyiyAAAAAB407la6fl3pD/tkS7We/ae4krpubelt/dLLpd347MK50jmoa3NQ1t7B5cPw6/tLivQpKFxCnYGtVqeW5KvtJh4OR3kvQEAAIBA05wQrDjf/fc2uaS/fipduCR9Iy3wLifmHMk8tLV5aGvvoNXg13aXFmhybMJVy3eV5iu9neUAAAAA/FuTS1r7fucJwefuc/90JucL6eMCY2PzBZwjmYe2Ng9t7R3MFIRf21N2VPPHT221rMnVpL1lx7TkultVVlOl+X9ao1BnsGobLmnljHs0O+5ai6IFAAAA0FvvH5IKKoyp683d0rhhUmQfY+rzBZwjmYe2Ng9t7R3MFLxCU1OTVq9ercTERIWHh2vSpEnKycnRuHHjtHjxYqvDQxsnzleqtOas0mLiWy3fV16o6vqLunFYoqIj+mvbgqf07oLlevXOh/Xke+ssihYAYIbDZdJv37/8/1c/kI4adOIIwHMV59zJlmb/+a60t1BqbLIuJgSGSw3u+wEa5WK9tOWgcfVZjXMk89DW5qGtvYeZgldYtGiRNm7cqOXLlys9PV07duxQZmamKioq9Pjjj1sdHto4UV0pSYoMa/213rrPd+jGYWM1asDgVsur6i5o4pDRpsUHADCPy+W+0Xz2F63vDbXnmLT7mDR3ojQ31aroAHvZVyT973ap8YqHOOSXS0fKpHGx0qIMKZSzEPTQJ0XuewEaaVeBdOckKSzE2HqtwDmSeWhr89DW3sNMwS9lZWVp7dq12rRpk5YtW6ZZs2bpySef1NSpU9XQ0KC0tDSrQ0Qb46OGa2BYHz378SadvVijytpqvfzJu3rxk3f085szW8odPVuumVkrdMeGX+jriZMtjBgA4C07890JQan10ySbf/3bfneCEIB3lVZJ/9MmIShd7peHSqU/7r76fYCnPis2vs6L9e7EdSDgHMk8tLV5aGvv4Tu6L61atUpz585VRkZGq+Vjx45VSEiIUlPd0wu+8Y1vqKCgQEFBQQoJCdGqVas0Z84cK0K2vQFhffTHu5bpX95bp/iXHlaf4DBNGhqnt771z5oxakJLufjIocrOXKGCs2W67Y2f644xJHgBIJC4XNLWg5JDl5OAbTkkbftcSrvGvLgAO3r/kPshEJ35qEC64ytS3zBzYkJgOV7pnXqLK6XkEd6p20ycI5mHtjYPbe09JAUlFRcX68CBA3rssceueq2oqEgpKSkKC3OPWtauXavIyEhJ0t69ezVz5kxVVlYqKCjoqvf2hOPKa55s7tKy17ssM33keOXcu6LD1+sa6hUW7L4OYEBohPqGhHv02awHAPAfkcOS9L1nD3VaxiX3iWTfQcN04WypOYEBNvSD/yxR38jYTss0Nknps+/ToR1dj/WAKzkcTv3o1cZWy7p6wnBHrz/6Wuv/r/7P3+q2l7/fi+i8w5Nzora8dY7UViCdM/WknSXauido694xOj6SgnInBSUpNrb1AKa2tlY5OTm6/fbbW5Y1JwQlqaqqSg6HQy5XF1+HwjK5pflavv0NBTmcqm9q0JrZ37U6JACAwUJCPX9kZHfKAui+kDDP+lgwfRE94HAaMxGjPc6gALihoIc4RzIPbW0e2rpnSApKio6OliTl5eVp3rx5LcufeeYZlZSUKD09vVX5pUuX6q9//auqqqr0hz/8QcHBxjUjCcbL6p/I6nUd00eO19YFP+32+1gPAOA/auqk5X/o+pLF4CCp7ES+whj9AF6zerN04kzHl/I3ezPrFSXGvmJKTAgcLpf0f34v1V8xWbDtjL9mzTMEO3q9rR8s/I7+9uvv9C5ALzDinKitnp4jtRVI50zeaGeJtm4Pbe1bGBZLSkhIUGpqqlatWqWoqCiNGDFCGzZs0ObNmyXpqqTgCy+8IEnKycnRY489pvfee0/9+vUzPW4AAOC+L9mk0dInhZ3fU/D6eJEQBLxsWqL0xscdv+6QFNVPGhNjWkgIIA6HNDxSKjxtfN0jBhlfJwD4Op4+LMnpdGr9+vVKSUnRkiVLtHDhQkVHR2vp0qUKCgpqechIWxkZGXI6nfrggw9MjhgAAFxpXqoUHuJOOLTlcLgTh7dea3pYgO1MjpdGRbX/WnP//NZkyenbt2yCD4uL9lK9g71TLwD4MpKCX0pKStK2bdtUU1OjoqIirVy5Uvv371dycrIiIiIkSdXV1SosLGx5z969e5Wfn68JEyZ0VC0AADDBkAHSj26Vhrcz02N0lPSPt0mD+pofF2A3ocHSklvcs3fb5v0G9pF+kBEYT3iFdW5IML7OUVHSsMiuywFAoOEimk7k5uZqypQpLf+vqanRPffco+rqagUHBys8PFy/+93vNHr0aAujBAAAkvuEbtntUtFp96VlDknxQ6SRHcxaAuAdfUKlhTOkymrp85NSfZMUM0AaFys5mZKAXhoZJY0ZKuWXG1fnjHHuWeUAYDckBTtQXV2tvLw8PfTQQy3LYmJitHPnTgujsrdl217V7tICXRdzjdbM/l6vywEAAo/D4b60zFuXlwHwXFQ/aXqS1VEgEM2/QXp2s9TY1Pu6EmPcl737CzPOiU6cr9SaXW/p32Z/V/+Ru1lvHv5Y2Zkrehm5/7uyXSR51Dacw3rGrO36h2+/oqpLF+R0ODQ5doxWz7q/t6H7Pb6r60C/fv3U2NioRx55xOpQIGlv2VFVX7qobZlP6VJjg3JL8ntVDgAAAIB/ih0ofe26zss8+lrXTx7uGyYtmOI/97g065xoS+F+3RI3UXUN9dpXXtj1G2yiuV0kedQ2nMN6xsztOjN5uv5+95PKzlyh8gtV2l9RZMSf4NdICsIvfHTySMsOeHbcRO0sOdyrcjlFBzX0+R9ozrqVGvvSj/TNN//NO4EDAAAAMFzGeOn29p8H6ZF+YdKS2dLgfsbF5G1mnRO9d/xz3Txqgn67P1v3X3uzF/4S39de2zS3iySP2sbo9RWozNyuvzZ2ssKDQyVJIc5gBTlIidEC8Atn62o0IMz9wJeBYRE6e/FCr8rNGDVe1w8bo3cXLNeMUeP1/JyF3gkcAAAAgFfcNlF6YIY7wdcdSbHS43P9756zZpwTuVwu1dTXKSwoWDnHD2rW6BTv/DE+rr22qamvU7/QcNU3NnjUNkavr0Bl5nbdLzRckvRpRZFOXTin5OiRXviL/Av3FIRfGBjWR+fqaiVJ5+pqFRnep1flCs6WK37gUElS8flKjejvZyMCAAAAAPrKaGnsUCnnC+nDI1J1Xcdlr4l2P1QkLc4/HyxixjnRJ+XHlDo0Tq8d3K4FE6Z54a/wD23bpqL2nFKHxkmSx21j9PoKVGZu15JUWVutR7es1etf/ZHRf4pfYqYg/MKU4YnaVnRAkrS18IBuHDZWDU2NKqup6lG5g6eLlTx4pBqbmuT0xxEBAAAAAElSv3Dpjq9IK+6SHp4jfT1Nmp4oTRkjzRwv3TtV+slXpUdvk9Kv8c+EoGTOOdGWY/s1J+5aHaos0cv73tWdG36hg6eK9cKet034C31H27ZpbhdJ7bZNb9ZDe+XsxMztuqGpUQ9sfkG/zLhXsX0jTfjrfB9JQfiF62LiFR4collZTyvI6dT1w8bqWFWFntr+Ro/KHTxVrOTokaprrFf5hXMqqT5j5p8DAAAAwGDBQdLYGGnWBPcTihdMkb6RLt2QIMUMsDq63jPjnGh32VGlxyboXzMy9Zdv/0RvffvHSo4eqaVpt5n5p1qubdtsLTqg9NgESWq3bXqzHtorZydmbtcbDn2k3NIC/SQnS3PWrdTOk3lm/qk+yeFyuVxWBwG0p/6JrE5f35j3sQaF9+3yXg6elrtSyLOZHpcFAAAAAG8w+5xo/Rc7NX/8FI9iC6Rzpq7auat28ea5qWSvtpbYrs1EUhA+y5OdhbfYbUcAAAAAwPdYeU7UlUA6Z/LldpZoazMFUlt7gqQgAAAAAAAAYDPcUxAAAAAAAACwGZKCAAAAAAAAgM2QFAQAAAAAAABshqQgAAAAAAAAYDMkBQEAAAAAAACbISkIAAAAAAAA2AxJQQAAAAAAAMBmSAoCAAAAAAAANkNSEAAAAAAAALAZkoIAAAAAAACAzZAUBAAAAAAAAGyGpCAAAAAAAABgMyQFAQAAAAAAAJshKQgAAAAAAADYDElBAAAAAAAAwGZICgIAAAAAAAA2Q1IQAAAAAAAAsBmSggAAAAAAAIDNkBQEAAAAAAAAbIakIAAAAAAAAGAzJAUBAAAAAAAAmyEpCAAAAAAAANgMSUEAAAAAAADAZkgKAgAAAAAAADZDUhAAAAAAAACwGZKCAAAAAAAAgM2QFAQAAAAAAABshqQgAAAAAAAAYDMkBQEAAAAAAACbISkIAAAAAAAA2AxJQQAAAAAAAMBmSAoCAAAAAAAANkNSEAAAAAAAALAZkoIAAAAAAACAzZAUBAAAAAAAAGyGpCAAAAAAAABgMyQFAQAAAAAAAJshKQgAAAAAAADYDElBAAAAAAAAwGZICgIAAAAAAAA2Q1IQAAAAAAAAsBmSggAAAAAAAIDNkBQEAAAAAAAAbIakIAAAAAAAAGAzJAUBAAAAAAAAmyEpCAAAAAAAANgMSUEAAAAAAADAZkgKAgAAAAAAADZDUhAAAAAAAACwGZKCAAAAAAAAgM2QFAQAAAAAAABshqQgAAAAAAAAYDMkBQEAAAAAAACbISkIAAAAAAAA2AxJQQAAAAAAAMBmSAoCAAAAAAAANkNSEAAAAAAAALAZkoIAAAAAAACAzZAUBAAAAAAAAGyGpCAAAAAAAABgMyQFAQAAAAAAAJshKQgAAAAAAADYDElBAAAAAAAAwGaCrQ4AgH9qcklVF6RLDVJwkDSoj+TkawYAAAAAAPwCSUEAHqtrkPYcc/8cr5Qu1l9+LTRIGhElXRcnXR8vRYRaFSUAAAAAAOiKw+VyuawOAoBvc7mknfnSpj1SbX3X5UODpdtTpYxxzB4EAAAAAMAXkRQE0Km6eul/tksHT3b/vQlDpEUZUt8w4+MCAAAAAAA9R1IQQIcuNUgvbpUKKnpex/BI6eE5Uh8SgwAAAAAA+Awu7APQoTd3d50QfO4+909HTp6V1n3kvgQZAAAAAAD4BpKCANp1qET68IgxdX16XNpbaExdAAAAAACg90gKXqGpqUmrV69WYmKiwsPDNWnSJOXk5GjcuHFavHix1eEBpnp7v7H1/W0/swUBAAAAAPAVwVYH4EsWLVqkjRs3avny5UpPT9eOHTuUmZmpiooKPf7441aHB5jm5Jne3UewPeXnpMNlUlKssfUCAAAAAIDuIyn4paysLK1du1bZ2dnKyMiQJM2aNUt79uzRxo0blZaWZnGEgHm+KPFSvSdJCgIAAAAA4Au4fPhLq1at0ty5c1sSgs3Gjh2rkJAQpaamSpKOHTumjIwMJSUlaeLEiXr//fetCBfwquOV/lUvAAAAAADoHmYKSiouLtaBAwf02GOPXfVaUVGRUlJSFBYWJkl68MEHdc899+ihhx7Sjh07NH/+fB09elShoaGGxOJwOAypB+iNu5/aoWGJU1st6+wJwx29/uhrrf+/69MjcvxDYi+jAwAAAAAA7XF142b+zBSUOykoSbGxra9rrK2tVU5OTsulw6dOndL27du1aNEiSdK0adM0fPhwbdu2zdyAAS9zOIO8U6/DO/UCAAAAAIDuYaagpOjoaElSXl6e5s2b17L8mWeeUUlJidLT0yW5Zw3GxMS0zBqUpPj4eBUWFhoWS/Ply9nZ2R2WmTlzZpdlgN54cevV9xVsO+uvWfMMwY5ev1LK+PhufWsBAAAAAAC8g6SgpISEBKWmpmrVqlWKiorSiBEjtGHDBm3evFmSWpKCgF2MGOSdh42MHGR8nQAAAAAAoPu4fFiS0+nU+vXrlZKSoiVLlmjhwoWKjo7W0qVLFRQU1PKQkdGjR6usrEx1dXUt7z169Kji4uKsCh3wioQh3qn3Gi/VCwAAAAAAuoeZgl9KSkq66t6A999/v5KTkxURESHJfZnx9OnT9Zvf/KblQSMnTpzQrFmzrAgZ8Jrxw6WBEVJVrXF1hgVL1402rj4AAAAAANBzzBTsRG5u7lWXDr/44otat26dkpKStHjxYmVlZRn25GHAVwQ5pRnjjK1z6lgpLMTYOgEAAAAAQM8wU7AD1dXVysvL00MPPdRqeUJCgt577z2LogLMM3O8tKdQOnmm93VF9ZVuT+19PQAAAAAAwBgkBTvQr18/NTY2Wh0GYJngIOn+adJ//F26WN9xua6eOhwcJH1nGrMEAQAAAADwJVw+DKBDwyKlH86WInqY0AsJkhbdLCUMNTYu4P+3d+9BWlYHmsCfvkBzUwi2goISuUNrs4BRJKOAWhZkdMdZywuZZRKWKlxkkhXXqZ0tC6NrlpohrGVlZms2mapZppIMqUCYiXGItV6g1SgTCV5CEtMCaouCMqBoY8ute/9oQC3y1QAAE7ZJREFUQDvKpaHpD3h/v6qv4Dvv+U4/3QX88XDe9wAAAHB8lILAYX2+OrnrS8mwfu373KCzkv86LRl13onJBQAAABw7tw8DR3RWr+T2q5OX3kierk9eefvQcz9fnfzB8GTcoKTcfzsAAADASUkpCByVsrJkzAWtrx1NyRvbki07kodfaL3+n65Mzu+bfK5naXMCAAAAR2YfD9BuvbsnFw1Mrqn5eKz2fIUgAAAAnCqUggAAAABQMEpBAAAAACgYpSAAAAAAFIxSEAAAAAAKRikIAAAAAAWjFAQAAACAglEKAgAAAEDBKAUBAAAAoGCUggAAAABQMEpBAAAAACgYpSAAAAAAFIxSEAAAAAAKRikIAAAAAAWjFAQAAACAglEKAgAAAEDBKAUBAAAAoGCUggAAAABQMEpBAAAAACgYpSAAAAAAFIxSEAAAAAAKRikIAAAAAAVTWeoAUGTbGpNXtiQN25MdHyYtLUmvbsnAvsmQc5IBnyt1QgAAAOB0pBSEEtj4TvLor5OX30paPuP6Lza2/nrBWclVo5IxFyRlZZ0aEQAAADiNKQWhE+3em/z0heSp3x3d/IZtyeKnk4sGJrdcmpzR/cTmAwAAAIpBKQidZNee5Dsrk41b2//ZdZuSze8lc69O+vbq+GwAAABAsThoBDpBc0vyf586tkLwgG2Nyd8+kXy0p+NyAQAAAMWkFIRO8MwrycubDz/nwT9pfR3O1g+Sh9Z2XC4AAACgmJSCn9Dc3JxFixZl2LBh6datW8aMGZO6urqMGDEis2fPLnU8TlEf7kp++nzHrffM+uSNbR23HgAAAFA8SsFPmDVrVu6///7cdttt+dnPfpabb74506dPz8aNGzN+/PhSx+MU9YtXk117O3bNp+o7dj0AAACgWBw0st+SJUuyePHirFq1KpMmTUqSTJkyJWvXrs3y5cszbty4EifkVLVmY8evufb15OZLk8qKjl8bAAAAOP3ZKbjfggULMnXq1IOF4AFDhw5Nly5dUltbmyS55557Mnz48JSXl2fZsmWliMopZPfe5K33On7dvfuSzTs6fl0AAACgGJSCSTZt2pR169blpptu+tS1hoaG1NTUpKqqKkkyderUPPLII7nyyis7OyanoLffbz15+ER4690Tsy4AAABw+nP7cFpLwSTp379/m/GmpqbU1dVl2rRpB8cmTpx4QrPU1dUlScrKyo4492jmUFrnjbgiN81/ss3YkU4YPtT1O37Q9v1tc76WFx/9m+NI1zH+y/dbW09/HgEAAKC0WlqOfmeSnYJJqqurkyT19W1Pb1i4cGE2b97skBGOWfPe3Sds7X17d52wtQEAAIDTm52CSQYPHpza2tosWLAgffv2zYABA7Js2bKsWLEiSTq1FDzwTMNVq1Ydcs7kyZOPOIeTw85dyd2/9+jJ39/xd8CBHYKHuv77/mnJdzO033ePPVwHOZC3Pf8bAQAAAJSWnYJJysvLs3Tp0tTU1GTOnDmZOXNmqqurM3fu3FRUVBw8ZATaq2dVclavE7P2wL4nZl0AAADg9Gen4H7Dhw/PypUr24zNmDEjo0ePTvfu3UuUitNB7fnJyt927Jojzk26denYNQEAAIDisFPwMNasWfOpW4fnz5+fgQMH5tlnn81tt92WgQMHZsOGDSVKyKngi8OSjj6C44vDOnhBAAAAoFCUgofQ2NiY+vr6jBs3rs34/fffn02bNmXXrl3Ztm1bNm3alCFDhpQoJaeC6jOSiR1Y4g0+O7loYMetBwAAABSP24cPoVevXtm3b1+pY3Ca+Pdjk5c3J9saj2+dLhXJ9MuT8o7eeggAAAAUilIQOkFVl2T2lORvHk0++Oiz5xzp1OHK8mTWpOTsMzo+HwAAAFAsbh+GTtLvzOTr1yYDP9f+z/bpkcy5Khl5bsfnAgAAAIrHTkHoRGefkcybmjz+m9YTiZt2H35+ZUVy2eDkun+XdO/aORkBAACA059SEDpZRXly7UXJ5JHJCw1J/eakYXvyzvut1/v2TAb2TQafk3zhwqRnVWnzAgAAAKcfpSCUSNfK5NLBra/k42cK3nND6TIBAAAAxeCZggAAAABQMEpBAAAAACgYpSAAAAAAFIxSEAAAAAAKRikIAAAAAAWjFAQAAACAglEKAgAAAEDBKAUBAAAAoGCUggAAAABQMEpBAAAAACgYpSAAAAAAFIxSEAAAAAAKRikIAAAAAAWjFAQAAACAglEKAgAAAEDBKAUBAAAAoGCUggAAAABQMEpBAAAAACiYylIH4OSz58+XlDrCCdHlW9NLHQEAAADgpGCnIAAAAAAUjFIQAAAAAApGKQgAAAAABaMUBAAAAICCUQrSKd7ZuSNdF305z7/9Wpvx13dsTddFX85vt71ZmmAAAAAABaQUpFOs2bIx3Su75uKzz28z/tyWDTmja/eM6HtuiZIBAAAAFI9SkE7xy7c3Zsw5g1JZXtFmfM3mDRnX78KUl/mjCAAAANBZNDF0il9u2ZhL+g/+1PhzWzZk/GeMAwAAAHDiVJY6AMWw9u1Xc9PIy9uMNbc05/m3X8ucsdfm7Z07ctNPHkjX8so07d2d+6+4JVcNuqhEaTtfS8vHv29uScrLSpelPfbsK3UCAAAA4FjYKfgJzc3NWbRoUYYNG5Zu3bplzJgxqaury4gRIzJ79uxSxztlvfnB9mzZ+V7G9buwzfiL77yexj0f5bJzh6W6+xlZees38tit8/O96/4sdz/5wxKl7VzNLcnq9cnCFR+P3fdPyaPrkt17S5frSLbsSH7wbPIXP/p4bPFTyRvbSpcJAAAAOHp2Cn7CrFmzsnz58syfPz/jx4/PM888k+nTp2fr1q258847Sx3vlPVm4/YkSZ+qHm3Gf/jbZ3LZuUNz/plntRnfsevDXHz2BZ2Wr1SaW5IlzybPvZp8cmPgjqbkX15M1m1Kbr8mqTrJ/pZufCf52yeSvfuST2xwzIsNyUtvJLMmJTUDShYPAAAAOAp2Cu63ZMmSLF68OA899FDuuuuuTJkyJXfffXcuv/zy7N27N+PGjSt1xFPWyL7npXdVj3zrFw/lvY92ZntTY777wmP5Py88mv955fSD8159751MXnJv/nDZX+aPhl1SwsSd4xcbWwvBpG25dsDr25J/eaFTIx3R3n3J3z/56UIwaX3f0pL8w1PJh7tLkQ4AAAA4WkrB/RYsWJCpU6dm0qRJbcaHDh2aLl26pLa2Nu+++26uu+66DB8+PGPGjMm1116b9evXlyjxqePMqh755z++K7/c8mou/M6f5eK/vyv//MpzefjG/5Yrzx91cN6Ffc7Jqun35uk/+R+54/HFpQvcCVpakidfbrtD8LOs3pDs2tMpkY7Kiw1J467PLjGT1vHd+5LnNnZmKgAAAKC9TrIbE0tj06ZNWbduXebNm/epaw0NDampqUlVVVWamppyxx135JprrkmSfPvb387MmTPz1FNPdViWurq6JElZ2ZFPmjiaOcdi913/2OFrfnHgyNR9+d5DXt+1d0+qKrskSc7s2j09u3Tr8Awn6ud1LLp2PyNz/u79I87bvTcZfPEVeet3T3dCqiO7etZ3M/rKmSmvOPQ/Hc379mbRdx7O5Af/uBOTAQAAAC0th9rG82lKwbSWgknSv3//NuNNTU2pq6vLtGnTkiR9+vQ5WAgmycSJE7Nw4cLOC3oaW7NlQ+Y//aNUlJVnT/PePHDVn5Y60glVVlZx9HPLj37uiXZUWcrKTqrMAAAAwKcpBZNUV1cnSerr6/OlL33p4PjChQuzefPmjB8//jM/9+CDD+aGG27o0CwHbl9etWrVIedMnjz5iHOOx54/X3JC1j2cLw4cmSduveeEfo32tOUnWktLcv9Pku07Dz+vvCx5ee2q9Or4jZPH5On6ZNlzh59TXl6ROV+5Pg/9r5Pn5w0AAAC0pRRMMnjw4NTW1mbBggXp27dvBgwYkGXLlmXFihVJ8pml4H333Zf169fniSee6Oy4nAbKypI/GJ489Pxh5iQZNygnTSGYJJdcmDy0tvW5gYdSVpZcPrTzMgEAAADt56CRJOXl5Vm6dGlqamoyZ86czJw5M9XV1Zk7d24qKipSW1vbZv43v/nNPPzww3nkkUfSo0ePEqXmVHfFiGTw2Z99rSxJnx7J9SfZodfduiS3TmjN9/tPaDzw/sZLWrMDAAAAJy87BfcbPnx4Vq5c2WZsxowZGT16dLp3735w7L777suKFSvy6KOPpk+fPp0dk9NIl4rkP1+V/Oyl5Nn1yUf7TxmuKG/dIXj92OTM7odfoxTGfT7p3rU1d8O2j8f79U6m1SZjLihZNAAAAOAoKQUPY82aNZkwYcLB97/+9a9z7733ZsiQIQef65ckL7zwQgnScTroWpn80bjWMu3Nd1ufNdivd9KzqtTJDm/Uea2vt99PPmhqzdu/d+utwwAAAMDJTyl4CI2Njamvr8/tt99+cKympuakOqyilO5a+b38csvGjO33+Txw1VeOe157vPnB9jzw3MO5ZdTE3LXyeykvK8sl/Ydk0ZQZHbJ+KXStTC48xK3EJ7N+Z7a+AAAAgFOLZwoeQq9evbJv37587WtfK3WUk87zb7+axt0fZeX0b2T3vr1Zs3nDcc1rr8df/1WuHnRxLjizOv/v5ruzavq9eefDHfnV1oYOWR8AAADgdGenIO32r2+tz9WDLk6SXDXo4qze/EouOXfIMc87nLqG3+SmnzyQ2rMH5bUdW1N7zqD07dYzD1791fTq+vGxvF3KK1NRpuMGAAAAOBpaFNrtvV07c2ZV6wkYvau6572PPjyueYdzxfkj84Vzh+SxW+fnivNH5q+vmZmde3a1KQRf2tqQf/vw/YyuHngM3w0AAABA8dgpSLv1ruqR93c1JUne39WUPt16HNe8LTvfy3/86V+3GevXs3d+cP3Xs/G9d3Jh73OSJJs+2J6tTe+n9pxBB+dtb2rMHY8vzj9e//Xj/r4AAAAAikIpSLtNOG9Y/u7Fx3PTyAl54vV1+dOLrsze5n3Z1tSYfj17t3te/5598tit8z/za/1m26aMPmtg9jU3p7ysLI+/9qtcM+iiJMne5n356or/nb+a9OX079nnxH7TAAAAAKcRtw/TbmP7XZhulV0yZcl9qSgvzxfOHZrXdmzNN57+0THNO5zf/NumjK4emF379uSdD9/PEw3rMr7/4CTJst/9a9Zs2Zj/Xrck1/zw/qx+q75Dv08AAACA05WdghyTB676Spv3L21tyC2jJh7zvEP5iwk3HPz981/9qyx9eXXK9x8ocuuoibm1HWsBAAAA0EopSIf4D8Mv7dB5h3LTyAnH9XkAAAAAlIJ8hi7fml7qCAAAAACcQJ4pCAAAAAAFoxQEAAAAgIJRCgIAAABAwSgFAQAAAKBglIIAAAAAUDBKQQAAAAAoGKUgAAAAABSMUhAAAAAACkYpCAAAAAAFoxQEAAAAgIJRCgIAAABAwSgFAQAAAKBglIIAAAAAUDBKQQAAAAAoGKUgAAAAABSMUhAAAAAACkYpCAAAAAAFoxQEAAAAgIJRCgIAAABAwSgFAQAAAKBglIIAAAAAUDBKQQAAAAAoGKUgAAAAABSMUhAAAAAACkYp+AnNzc1ZtGhRhg0blm7dumXMmDGpq6vLiBEjMnv27FLHAwAAAIAOUVnqACeTWbNmZfny5Zk/f37Gjx+fZ555JtOnT8/WrVtz5513ljoeAAAAAHQIpeB+S5YsyeLFi7Nq1apMmjQpSTJlypSsXbs2y5cvz7hx40qcEAAAAAA6htuH91uwYEGmTp16sBA8YOjQoenSpUtqa2uTJDfccENqa2szduzYXHrppXnsscdKERcAAAAAjpmdgkk2bdqUdevWZd68eZ+61tDQkJqamlRVVSVJFi9enD59+iRJnn/++UyePDnbt29PRUVFp2YGAAAAgGOlFExrKZgk/fv3bzPe1NSUurq6TJs27eDYgUIwSXbs2JGysrK0tLR0WJa6urokSVlZ2RHnHs0cAAAAAIqhPR2V24eTVFdXJ0nq6+vbjC9cuDCbN2/O+PHj24zPnTs3gwcPzo033pgf//jHqazUrQIAAABw6ihr6chtbqeo5ubmjB07Nps3b86iRYsyYMCALFu2LCtWrEhDQ0NWr16dyy677FOfq6ury7x58/Lkk0+mV69eJUgOAAAAAO1np2CS8vLyLF26NDU1NZkzZ05mzpyZ6urqzJ07NxUVFQcPGfl9kyZNSnl5eX7+8593cmIAAAAAOHbue91v+PDhWblyZZuxGTNmZPTo0enevXuSpLGxMdu2bcugQYOStB40smHDhowaNarT8wIAAADAsVIKHsaaNWsyYcKEg+937tyZW265JY2NjamsrEy3bt3y/e9/PxdccEEJUwIAAABA+ygFD6GxsTH19fW5/fbbD47169cvq1evLmEqAAAAADh+DhoBAAAAgIJx0AgAAAAAFIxSEAAAAAAKRikIAAAAAAWjFAQAAACAglEKAgAAAEDBKAUBAAAAoGCUggAAAABQMEpBAAAAACgYpSAAAAAAFIxSEAAAAAAKRikIAAAAAAWjFAQAAACAglEKAgAAAEDBKAUBAAAAoGCUggAAAABQMEpBAAAAACgYpSAAAAAAFIxSEAAAAAAKRikIAAAAAAWjFAQAAACAglEKAgAAAEDBKAUBAAAAoGCUggAAAABQMEpBAAAAACgYpSAAAAAAFIxSEAAAAAAKRikIAAAAAAXz/wExjkfRA4wzwgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 1683.19x565.88 with 1 Axes>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"##### build your quantum circuit here\n",
"qc = QuantumCircuit(4)\n",
"\n",
"qc.u3(pi,0,pi,1)\n",
"qc.u3(pi/2,-pi/2,-pi/2,1)\n",
"qc.u3(-pi/2,0,0,1)\n",
"qc.u3(0,0,pi,3)\n",
"\n",
"qc.cnot(3,1)\n",
"\n",
"qc.u3(0,0,pi/4,1) \n",
"\n",
"qc.cnot(3,1)\n",
"\n",
"qc.u3(0,0,-pi/4,1)\n",
" \n",
"qc.cnot(1,3)\n",
" \n",
"qc.u3(-pi/2,0,0,1) \n",
"qc.u3(0,0,pi/4,3) \n",
"qc.u3(pi/4,0,0,3) \n",
"qc.u3(0,0,pi/2,3) \n",
" \n",
" \n",
" \n",
"qc.u3(-pi/2,-pi/2,-pi/2,0) \n",
"qc.u3(0,0,-pi/2,0)\n",
"qc.u3(pi,0,pi,2)\n",
"\n",
"qc.cnot(2,0)\n",
" \n",
"qc.u3(pi,0,pi,2) \n",
"qc.u3(-pi/2,0,0,0) \n",
"\n",
"qc.cnot(2,0)\n",
" \n",
"qc.u3(pi/4,0,0,0) \n",
"qc.u3(0,0,pi/2,0) \n",
" \n",
"qc.cnot(2,1)\n",
" \n",
" \n",
"qc.u3(pi/2,0,0,2) \n",
"qc.u3(0,0,-pi/2,2) \n",
" \n",
"qc.cnot(2,1)\n",
"qc.cnot(2,0)\n",
" \n",
"qc.draw(output='mpl') # we draw the circuit\n",
"# apply operations to your quantum circuit here"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Circuit stats:\n",
"||U-V||_2 = 1.5180500144319528e-15\n",
"(U is the reference unitary, V is yours, and the global phase has been removed from both of them).\n",
"Cost is 99\n",
"\n",
"Great! Your circuit meets all the constrains.\n",
"Your score is 99. The lower, the better!\n",
"Feel free to submit your answer and remember you can re-submit a new circuit at any time!\n"
]
}
],
"source": [
"##### check your quantum circuit by running the next line\n",
"check_circuit(qc)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can check whether your circuit is valid before submitting it with `check_circuit(qc)`. Once you have a valid solution, please submit it by running the following cell (delete the `#` before `submit_circuit`). You can re-submit at any time.\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div style=\"border: 2px solid black; padding: 2rem;\">\n",
" <p>\n",
" Success 🎉! Your circuit has been submitted. Return to the\n",
" <a href=\"https://quantum-computing.ibm.com/challenges/4anniversary/?exercise=4\" target=\"_blank\">\n",
" IBM Quantum Challenge page\n",
" </a>\n",
" and check your score and ranking.\n",
" </p>\n",
" <p>\n",
" Remember that you can submit a circuit as many times as you\n",
" want.\n",
" </p>\n",
" </div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Send the circuit as the final answer, can re-submit at any time\n",
"submit_circuit(qc) "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 04c.jpg
Type: image/jpeg
Size: 1562715 bytes
Desc: not available
URL: <https://plc.inf.elte.hu/pipermail/qp-l/attachments/20200514/4d8255e3/attachment-0003.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 4a.jpg
Type: image/jpeg
Size: 1062076 bytes
Desc: not available
URL: <https://plc.inf.elte.hu/pipermail/qp-l/attachments/20200514/4d8255e3/attachment-0004.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 4b.jpg
Type: image/jpeg
Size: 1198363 bytes
Desc: not available
URL: <https://plc.inf.elte.hu/pipermail/qp-l/attachments/20200514/4d8255e3/attachment-0005.jpg>
More information about the Qp-l
mailing list