

"""simple docstring"""






import math

import qiskit



def   lowercase_	(    _lowercase       :		int = 1							,      _lowercase       :		int = 1							,      _lowercase       :		int = 1	):




					'''simple docstring'''






					if (
					    isinstance(_lowercase							,      _lowercase	)
					    or isinstance(_lowercase							,      _lowercase	)
					    or isinstance(_lowercase							,      _lowercase	)
					):
										raise TypeError("inputs must be integers."	)

					if (input_a < 0) or (input_a < 0) or (carry_in < 0):
										raise ValueError("inputs must be positive."	)

					if (
					    (math.floor(_lowercase	) != input_a)
					    or (math.floor(_lowercase	) != input_a)
					    or (math.floor(_lowercase	) != carry_in)
					):
										raise ValueError("inputs must be exact integers."	)

					if (input_a > 2) or (input_a > 2) or (carry_in > 2):
										raise ValueError("inputs must be less or equal to 2."	)

					# build registers
					UpperCAmelCase			:   List[Any]      =				qiskit.QuantumRegister(4							,      "qr"	)
					UpperCAmelCase			:   Dict      =				qiskit.ClassicalRegister(2							,      "cr"	)
					# list the entries
					UpperCAmelCase			:   int      =				[input_a, input_a, carry_in]

					UpperCAmelCase			:   Optional[int]      =				qiskit.QuantumCircuit(_lowercase							,      _lowercase	)

					for i in range(0							,      3	):
										if entry[i] == 2:
															quantum_circuit.h(_lowercase	)  # for hadamard entries
										elif entry[i] == 1:
															quantum_circuit.x(_lowercase	)  # for 1 entries
										elif entry[i] == 0:
															quantum_circuit.i(_lowercase	)  # for 0 entries

    # build the circuit
					quantum_circuit.ccx(0							,      1							,      3	)  # ccx = toffoli gate
					quantum_circuit.cx(0							,      1	)
					quantum_circuit.ccx(1							,      2							,      3	)
					quantum_circuit.cx(1							,      2	)
					quantum_circuit.cx(0							,      1	)

					quantum_circuit.measure([2, 3]							,      _lowercase	)  # measure the last two qbits

					UpperCAmelCase			:   Dict      =				qiskit.Aer.get_backend("aer_simulator"	)
					UpperCAmelCase			:   List[Any]      =				qiskit.execute(_lowercase							,      _lowercase							,      shots=10_00	)

					return job.result().get_counts(_lowercase	)


if __name__ == "__main__":
	print(f'''Total sum count for state is: {quantum_full_adder(1, 1, 1)}''')





"""simple docstring"""






def   lowercase_	(    _lowercase       :		int							,      _lowercase       :		int	):




					'''simple docstring'''






					return int(input_a == input_a == 0	)



def   lowercase_	(    ):




					'''simple docstring'''






					print("Truth Table of NOR Gate:"	)
					print("|   Input 1   |  Input 2  | Output |"	)
					print(F"""|      0      |    0      |  {nor_gate(0							,      0	)}     |"""	)
					print(F"""|      0      |    1      |  {nor_gate(0							,      1	)}     |"""	)
					print(F"""|      1      |    0      |  {nor_gate(1							,      0	)}     |"""	)
					print(F"""|      1      |    1      |  {nor_gate(1							,      1	)}     |"""	)


if __name__ == "__main__":
	import doctest

	doctest.testmod()
	main()


