






import numpy as np
import qiskit

def   __lowercase       (			snake_case = 8,	snake_case = None			):







				"""simple docstring"""






				__magic_name__		:List[Any]   =   np.random.default_rng(seed=snake_case			)

				# Roughly 25% of the qubits will contribute to the key.
				# So we take more than we need.
				__magic_name__		:Any   =   6 * key_len
				# Measurement basis for Alice's qubits.
				__magic_name__		:List[str]   =   rng.integers(2,	size=snake_case			)
				# The set of states Alice will prepare.
				__magic_name__		:List[Any]   =   rng.integers(2,	size=snake_case			)
				# Measurement basis for Bob's qubits.
				__magic_name__		:str   =   rng.integers(2,	size=snake_case			)

				# Quantum Circuit to simulate BB84
				__magic_name__		:Optional[int]   =   qiskit.QuantumCircuit(snake_case,	name='''BB84'''			)

				# Alice prepares her qubits according to rules above.
				for index, _ in enumerate(snake_case			):
								if alice_state[index] == 1:
												bbaa_circ.x(snake_case			)
								if alice_basis[index] == 1:
												bbaa_circ.h(snake_case			)
				bbaa_circ.barrier()

				# Bob measures the received qubits according to rules above.
				for index, _ in enumerate(snake_case			):
								if bob_basis[index] == 1:
												bbaa_circ.h(snake_case			)

				bbaa_circ.barrier()
				bbaa_circ.measure_all()

				# Simulate the quantum circuit.
				__magic_name__		:Optional[Any]   =   qiskit.Aer.get_backend('''aer_simulator'''			)
				# We only need to run one shot because the key is unique.
				# Multiple shots will produce the same key.
				__magic_name__		:Dict   =   qiskit.execute(snake_case,	snake_case,	shots=1,	seed_simulator=snake_case			)
				# Returns the result of measurement.
				__magic_name__		:str   =   job.result().get_counts(snake_case			).most_frequent()

				# Extracting the generated key from the simulation results.
				# Only keep measurement results where Alice and Bob chose the same basis.
				__magic_name__		:Optional[int]   =   ''''''.join(
				    [
				        result_bit
				        for alice_basis_bit, bob_basis_bit, result_bit in zip(
				            snake_case,	snake_case,	snake_case			)
				        if alice_basis_bit == bob_basis_bit
				    ]			)

				# Get final key. Pad with 0 if too short, otherwise truncate.
				__magic_name__		:Union[str, Any]   =   gen_key[:key_len] if len(snake_case			) >= key_len else gen_key.ljust(snake_case,	'''0'''			)
				return key


if __name__ == "__main__":
					print(f"The generated key is : {bbaa(8, seed=0)}")
					from doctest import testmod

					testmod()










"""simple docstring"""

from PIL import Image


def lowerCAmelCase_   (					UpperCamelCase__						:			Image					, UpperCamelCase__						:			int			):






 """simple docstring"""







 __lowercase						=						(259 * (level + 255)) / (255 * (259 - level))

 def contrast(UpperCamelCase__						:			int			) -> int:
  return int(128 + factor * (c - 128)			)

 return img.point(UpperCamelCase__			)


if __name__ == "__main__":
       # Load image
       with Image.open("image_data/lena.jpg") as img:
              # Change contrast to 170
              UpperCAmelCase__					=change_contrast(img, 170)
              cont_img.save("image_data/lena_high_contrast.png", format="png")
