from qiskit import *
from qiskit.tools.monitor import job_monitor
qr = QuantumRegister(3)
cr = ClassicalRegister(3)
circuit = QuantumCircuit(qr, cr)
circuit.draw(output="mpl")
for i in range(3):
circuit.h(i)
circuit.draw(output="mpl")
circuit.measure(qr, cr)
circuit.draw(output="mpl")
IBMQ.load_account()
provider = IBMQ.get_provider("ibm-q")
# Ajetaan ohjelma oikealla Ateenassa olevalla kvanttitietokoneella
computer = provider.get_backend("ibmq_valencia")
r = execute(circuit, backend=computer) # Testataan kvanttipiirin toiminta
job_monitor(r)
print(r.result().get_counts())
def noppa(circuit, computer):
r = execute(circuit, backend=computer).result()
numerot = {}
max_value = 0
max_key = 0
isMaxUnique = True
for key, value in r.get_counts().items():
if value > max_value:
max_value = value
max_key = key
isMaxUnique = True
elif value == max_value:
isMaxUnique = False
# Jos saadaan tulokseksi 0 tai 7, heitetään uudelleen.
# Myös jos on kaksi yhtä todennäköistä vastausta, joudutaan heittämään uudelleen
if not isMaxUnique or max_key == "000" or max_key == "111":
return noppa(circuit, simulator)
return int(max_key, 2)
print(noppa(circuit, computer))