from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.visualization import plot_circuit_layout

# 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 (comportament de particulă)
circuit.measure(qreg[0], creg[0])  # Măsurarea primului qubit

# Introducerea întârzierii pentru citirea celui de-al doilea qubit
# Metoda 1: Porți identitate
circuit.id(qreg[1])  # Porți identitate pentru a introduce întârziere

# Metoda 2: Porți Hadamard și inversă
circuit.h(qreg[1])
circuit.h(qreg[1])

# Metoda 3: Porți X și inversă
circuit.x(qreg[1])
circuit.x(qreg[1])

# Măsurarea celui de-al doilea qubit (întârziată)
circuit.measure(qreg[1], creg[1])

# Reprezentarea circuitului cuantic
plot_circuit_layout(circuit)
