from qiskit import QuantumCircuit

import quantum_utils_v1 as q

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

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

Drugim rečima, bit-flip (X) posmatran u Adamardovoj bazi ponaša se kao
phase-flip (Z). Ovaj program to demonstrira korak po korak na Blohovoj sferi.

Identitet H·X·H = Z je par sa programom "Z into X gate.py", gde važi H·Z·H = X.
"""
qc = QuantumCircuit(1, 1)
qc.reset(0)   # početno stanje |0⟩
qc.h(0)       # |0⟩ → |+⟩ : ovde nije deo sendviča, već priprema vidljivog stanja
qc.barrier()
q.show_bloch_sphere(qc)

# Sendvič H–X–H. Rezultat je isti kao da smo direktno primenili Z gejt.
qc.h(0)
qc.x(0)
qc.h(0)

qc.barrier()
q.show_bloch_sphere(qc)   # uporedi sa dejstvom samog Z gejta

qc.measure(0, 0)
q.show_qc(qc)          # prikaz dijagrama kola