from qiskit import *
from qiskit.quantum_info import Statevector
from math import pi

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.ccx(0,1,2)
qc.ry(pi,0)
qc.ch(1,2)
qc.tdg(2)
qc.cx(1,0)
qc.measure_all()
qc.draw(output="mpl")

qc.size()

qc.width()

qc.depth()

qc.num_qubits

qc.count_ops()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.ccx(0,1,2)
qc.ry(pi,0)
qc.ch(1,2)
qc.tdg(2)
qc.cx(1,0)
qc.measure_all()
qc.draw(output="mpl")

qc.size()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.ccx(0,1,2)
qc.ry(pi,0)
qc.ch(1,2)
qc.tdg(2)
qc.cx(1,0)
qc.measure_all()
qc.draw(output="mpl")

qc.width()

qc.qregs

qc.qubits

qc.num_qubits

qc.cregs

qc.clbits

qc.num_clbits

qc=QuantumCircuit(1)
qc.h(0)
qc.draw(output="mpl")

qc.depth()

qc=QuantumCircuit(1)
qc.h(0)
qc.y(0)
qc.draw(output="mpl")

qc.depth()

#Let's apply a barrier gate with no arguments
qc=QuantumCircuit(1)
qc.h(0)
qc.h(0)
qc.y(0)
qc.draw(output="mpl")

qc.depth()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.draw(output="mpl")

qc.depth()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.ccx(0,1,2)
qc.draw(output="mpl")

qc.depth()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.ccx(0,1,2)
qc.ry(pi,0)
qc.ch(1,2)
qc.draw(output="mpl")

qc.depth()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.ccx(0,1,2)
qc.ry(pi,0)
qc.ch(1,2)
qc.tdg(2)
qc.draw(output="mpl")

qc.depth()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.ccx(0,1,2)
qc.ry(pi,0)
qc.ch(1,2)
qc.tdg(2)
qc.cx(1,0)
qc.draw(output="mpl")

qc.depth()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.barrier()
qc.ccx(0,1,2)
qc.barrier()
qc.ry(pi,0)
qc.ch(1,2)
qc.barrier()
qc.tdg(2)
qc.cx(1,0)
qc.draw(output="mpl")

qc.depth()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.barrier()
qc.ccx(0,1,2)
qc.barrier()
qc.ry(pi,0)
qc.ch(1,2)
qc.barrier()
qc.tdg(2)
qc.barrier()
qc.cx(1,0)
qc.draw(output="mpl")

qc.depth()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.barrier()
qc.ccx(0,1,2)
qc.barrier()
qc.ry(pi,0)
qc.ch(1,2)
qc.barrier()
qc.tdg(2)
qc.cx(1,0)
qc.measure_all()
qc.draw(output="mpl")

qc.depth()

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.barrier()
qc.ccx(0,1,2)
qc.barrier()
qc.ry(pi,0)
qc.ch(1,2)
qc.barrier()
qc.tdg(2)
qc.cx(1,0)
qc.measure_all()
qc.draw(output="mpl")

qc.qubits

qc.num_qubits

qc=QuantumCircuit(3)
qc.h(range(2))
qc.x(2)
qc.barrier()
qc.ccx(0,1,2)
qc.barrier()
qc.ry(pi,0)
qc.ch(1,2)
qc.barrier()
qc.tdg(2)
qc.cx(1,0)
qc.measure_all()
qc.draw(output="mpl")

qc.count_ops()

