import numpy as np

# Importing standard Qiskit libraries
from qiskit import QuantumCircuit, transpile, Aer, execute
from qiskit.tools.jupyter import *
from qiskit.visualization import *
from qiskit.providers.aer import QasmSimulator

backend = Aer.get_backend('statevector_simulator')

qc1 = QuantumCircuit(4)

# perform gate operations on individual qubits
qc1.x(0)
qc1.y(1)
qc1.z(2)
qc1.s(3)

# Draw circuit
qc1.draw()

# Plot blochshere
out1 = execute(qc1,backend).result().get_statevector()
plot_bloch_multivector(out1)

qc2 = QuantumCircuit(4)

# initialize qubits
qc2.x(range(4))

# perform gate operations on individual qubits
qc2.x(0)
qc2.y(1)
qc2.z(2)
qc2.s(3)

# Draw circuit
qc2.draw()

# Plot blochshere
out2 = execute(qc2,backend).result().get_statevector()
plot_bloch_multivector(out2)

qc3 = QuantumCircuit(4)

# initialize qubits
qc3.h(range(4))

# perform gate operations on individual qubits
qc3.x(0)
qc3.y(1)
qc3.z(2)
qc3.s(3)

# Draw circuit
qc3.draw()

# Plot blochshere
out3 = execute(qc3,backend).result().get_statevector()
plot_bloch_multivector(out3)

qc4 = QuantumCircuit(4)

# initialize qubits
qc4.x(range(4))
qc4.h(range(4))

# perform gate operations on individual qubits
qc4.x(0)
qc4.y(1)
qc4.z(2)
qc4.s(3)

# Draw circuit
qc4.draw()

# Plot blochshere
out4 = execute(qc4,backend).result().get_statevector()
plot_bloch_multivector(out4)

qc5 = QuantumCircuit(4)

# initialize qubits
qc5.h(range(4))
qc5.s(range(4))

# perform gate operations on individual qubits
qc5.x(0)
qc5.y(1)
qc5.z(2)
qc5.s(3)

# Draw circuit
qc5.draw()

# Plot blochshere
out5 = execute(qc5,backend).result().get_statevector()
plot_bloch_multivector(out5)

qc6 = QuantumCircuit(4)

# initialize qubits
qc6.x(range(4))
qc6.h(range(4))
qc6.s(range(4))

# perform gate operations on individual qubits
qc6.x(0)
qc6.y(1)
qc6.z(2)
qc6.s(3)

# Draw circuit
qc6.draw()



# Plot blochshere
out6 = execute(qc6,backend).result().get_statevector()
plot_bloch_multivector(out6)

import qiskit
qiskit.__qiskit_version__