"""simple docstring"""


import qiskit







def 					UpperCAmelCase    (		UpperCAmelCase						,					UpperCAmelCase					)				->      qiskit.result.counts.Counts:
     snake_case_					       =					qiskit.Aer.get_backend('aer_simulator'					)

     # Create a Quantum Circuit acting on the q register
     snake_case_					       =					qiskit.QuantumCircuit(UpperCAmelCase						,					UpperCAmelCase					)

     # Apply X (NOT) Gate to Qubits 0 & 1
     circuit.x(0					)
     circuit.x(1					)

     # Map the quantum measurement to the classical bits
     circuit.measure([0, 1]						,					[0, 1]					)

     # Execute the circuit on the qasm simulator
     snake_case_					       =					qiskit.execute(UpperCAmelCase						,					UpperCAmelCase						,					shots=1000					)

     # Return the histogram data of the results of the experiment.
     return job.result().get_counts(UpperCAmelCase					)


if __name__ == "__main__":
    __UpperCamelCase									=			single_qubit_measure(2, 2)
    print(F"""Total count for various states are: {counts}""")



"""simple docstring"""



import math

import numpy as np
import qiskit
from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute
def 					_UpperCAmelCase      ( __lowerCamelCase   :       int = 3		)     ->					qiskit.result.counts.Counts:
  if isinstance(__lowerCamelCase ,					__lowerCamelCase		):
    raise TypeError('''number of qubits must be a integer.'''		)
  if number_of_qubits <= 0:
    raise ValueError('''number of qubits must be > 0.'''		)
  if math.floor(__lowerCamelCase		) != number_of_qubits:
    raise ValueError('''number of qubits must be exact integer.'''		)
  if number_of_qubits > 10:
    raise ValueError('''number of qubits too large to simulate(>10).'''		)

  _snake_case					     =       QuantumRegister(__lowerCamelCase ,					'''qr'''		)
  _snake_case					     =       ClassicalRegister(__lowerCamelCase ,					'''cr'''		)

  _snake_case					     =       QuantumCircuit(__lowerCamelCase ,					__lowerCamelCase		)

  _snake_case					     =       number_of_qubits

  for i in range(__lowerCamelCase		):
    quantum_circuit.h(number_of_qubits - i - 1		)
    counter -= 1
    for j in range(__lowerCamelCase		):
      quantum_circuit.cp(np.pi / 2 ** (counter - j) ,					__lowerCamelCase ,					__lowerCamelCase		)

  for k in range(number_of_qubits // 2		):
    quantum_circuit.swap(__lowerCamelCase ,					number_of_qubits - k - 1		)

  # measure all the qubits
  quantum_circuit.measure(__lowerCamelCase ,					__lowerCamelCase		)
  # simulate with 10000 shots
  _snake_case					     =       Aer.get_backend('''qasm_simulator'''		)
  _snake_case					     =       execute(__lowerCamelCase ,					__lowerCamelCase ,					shots=1_00_00		)

  return job.result().get_counts(__lowerCamelCase		)


if __name__ == "__main__":
 print(
     F"Total count for quantum fourier transform state is: \
    {quantum_fourier_transform(3)}"
 )



