from qiskit import QuantumCircuit

import quantum_utils_v1 as q

"""
PROMENA BAZE: Z "sendvič" daje X gejt
=====================================
Adamar gejt (H) zamenjuje X i Z osu na Blohovoj sferi. Zato sendvič
Z gejta između dva H gejta menja njegovu osu rotacije:

        H · Z · H = X              tj.   |ψ⟩ --H--Z--H-->  X|ψ⟩

Dakle phase-flip (Z) posmatran u Adamardovoj bazi ponaša se kao bit-flip (X).
Za razliku od "X into Z gate.py", ovde svaki korak prikazujemo posebno
(H, pa Z, pa H), da bi se na Blohovoj sferi videlo kako se stanje kreće.

Ovo je par sa programom "X into Z gate.py", gde važi H·X·H = Z.
"""
qc = QuantumCircuit(1, 1)
qc.reset(0)          # početno stanje |0⟩
# qc.x(0)            # otkomentariši da kreneš iz |1⟩ i uporediš rezultat
qc.barrier()
q.show_bloch_sphere(qc)  # stanje |0⟩ (severni pol)

# Prvi H: prebacuje nas u Adamarovu bazu  |0⟩ → |+⟩
qc.h(0)
qc.barrier()
q.show_bloch_sphere(qc)

# Z u toj bazi deluje kao bit-flip: rotira |+⟩ u |−⟩
qc.z(0)
qc.barrier()
q.show_bloch_sphere(qc)

# Drugi H: vraća nas u računsku bazu. Ukupni efekat H–Z–H jednak je X gejtu.
qc.h(0)
qc.barrier()
q.show_bloch_sphere(qc)

# Merenje radi provere konačnog stanja.
qc.measure(0, 0)
q.show_qc(qc)          # prikaz dijagrama kola
