from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, transpile, Aer, execute
from qiskit.visualization import circuit_drawer
from qiskit_ibm_provider import IBMProvider
from qiskit.providers.ibmq import least_busy

# Configurați token-ul IBM Quantum Experience
provider = IBMProvider('60bf7741c25aa9e468e815fc5701a91d59be5388bd103a5b3da2f66547d071ff3c72cd9e01a983f6d4ff10d15d2a6faa30c10dfd0b2932a4a935efe46d8fa5da')

# Crearea registrului cuantic și a celui clasic
qreg = QuantumRegister(2)
creg = ClassicalRegister(2)

# Crearea circuitului cuantic
circuit = QuantumCircuit(qreg, creg)

# Inițializarea într-o stare de suprapunere și înlănțuire
circuit.h(qreg[0])  # Poarta Hadamard pe primul qubit
circuit.cx(qreg[0], qreg[1])  # Înlănțuirea qubiților

# Măsurarea celui de-al doilea qubit
circuit.measure(qreg[1], creg[1])

# Alegerea celui mai disponibil backend
backend = least_busy(provider.backends(filters=lambda x: x.configuration().n_qubits >= 2 and not x.configuration().simulator and x.status().operational==True))
print("Vom rula pe:", backend)

# Transpilarea circuitului pentru backend-ul selectat
transpiled_circuit = transpile(circuit, backend)

# Rularea circuitului
job = backend.run(transpiled_circuit)

# Obținerea și afișarea rezultatelor
result = job.result()  # Corectat aici
counts = result.get_counts(circuit)
print(counts)
