from qiskit import *
%matplotlib inline

# Podemos transformar o nosso circuito em apenas uma porta

circuito = QuantumCircuit(2)
circuito.x(0)
circuito.h(1)
circuito.draw(output='mpl')

# Para conseguir uma porta que represente essas operações fazemos
# Podemos ainda adicionar um titulo para a nossa porta ou apenas deixar em branco
minha_porta = circuito.to_gate(label='Minha porta')

# Agora vamos adicionar ela em outro circuito

c2 = QuantumCircuit(2)

# Para adicionar uma porta dessa forma usamos o comando append()

c2.append(minha_porta,[0,1])
c2.draw(output='mpl')

# Para conferir se essa porta realmente representa a original fazemos

c2.decompose().draw(output='mpl')

