






"""simple docstring"""

import random
import sys

lowercase__      =				"""ABCDEFGHIJKLMNOPQRSTUVWXYZ"""

def 	__lowerCamelCase			(						)		->					None:

		"""simple docstring"""







		lowerCAmelCase_     :							Any             =    input("Enter message: " )
		lowerCAmelCase_     :							Union[str, Any]             =    "LFWOAYUISVKMNXPBDCRJTQEGHZ"
		lowerCAmelCase_     :							Optional[Any]             =    input("Encrypt/Decrypt [e/d]: " )

		check_valid_key(__UpperCamelCase )

		if resp.lower().startswith("e" ):
				lowerCAmelCase_     :							Optional[Any]             =    "encrypt"
				lowerCAmelCase_     :							List[str]             =    encrypt_message(__UpperCamelCase   , __UpperCamelCase )
		elif resp.lower().startswith("d" ):
				lowerCAmelCase_     :							Any             =    "decrypt"
				lowerCAmelCase_     :							Optional[Any]             =    decrypt_message(__UpperCamelCase   , __UpperCamelCase )

		print(f'''\n{mode.title()}ion: \n{translated}''' )

def 	__lowerCamelCase			(						__UpperCamelCase )		->					None:

		"""simple docstring"""







		lowerCAmelCase_     :							int             =    list(__UpperCamelCase )
		lowerCAmelCase_     :							Any             =    list(__UpperCamelCase )
		key_list.sort()
		letters_list.sort()

		if key_list != letters_list:
				sys.exit("Error in the key or symbol set." )

def 	__lowerCamelCase			(						__UpperCamelCase   , __UpperCamelCase )		->					str:

		"""simple docstring"""







		return translate_message(__UpperCamelCase   , __UpperCamelCase   , "encrypt" )

def 	__lowerCamelCase			(						__UpperCamelCase   , __UpperCamelCase )		->					str:

		"""simple docstring"""







		return translate_message(__UpperCamelCase   , __UpperCamelCase   , "decrypt" )

def 	__lowerCamelCase			(						__UpperCamelCase   , __UpperCamelCase   , __UpperCamelCase )		->					str:

		"""simple docstring"""







		lowerCAmelCase_     :							Any             =    ""
		lowerCAmelCase_     :							Dict             =    LETTERS
		lowerCAmelCase_     :							Any             =    key

		if mode == "decrypt":
				lowerCAmelCase_       ,			lowerCAmelCase_     :							List[str]             =    chars_b, chars_a

		for symbol in message:
				if symbol.upper() in chars_a:
						lowerCAmelCase_     :							List[Any]             =    chars_a.find(symbol.upper() )
						if symbol.isupper():
								translated += chars_b[sym_index].upper()
						else:
								translated += chars_b[sym_index].lower()
				else:
						translated += symbol

		return translated

def 	__lowerCamelCase			(						)		->					str:

		"""simple docstring"""







		lowerCAmelCase_     :							Optional[int]             =    list(__UpperCamelCase )
		random.shuffle(__UpperCamelCase )
		return "".join(__UpperCamelCase )


if __name__ == "__main__":
					main()








"""simple docstring"""

from __future__ import annotations

from PIL import Image

# Define the first generation of cells
# fmt: off
lowercase__      =				[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

def 	__lowerCamelCase			(						__UpperCamelCase )		->					list[int]:

		"""simple docstring"""







		return [int(__UpperCamelCase ) for c in f'''{ruleset:08}'''[:8]]

def 	__lowerCamelCase			(						__UpperCamelCase   , __UpperCamelCase   , __UpperCamelCase )		->					list[int]:

		"""simple docstring"""







		lowerCAmelCase_     :							int             =    len(cells[0] )  # 31
		lowerCAmelCase_     :							List[Any]             =    []
		for i in range(__UpperCamelCase ):
				# Get the neighbors of each cell
				# Handle neighbours outside bounds by using 0 as their value
				lowerCAmelCase_     :							List[str]             =    0 if i == 0 else cells[time][i - 1]
				lowerCAmelCase_     :							Optional[int]             =    0 if i == population - 1 else cells[time][i + 1]
				# Define a new cell and add it to the new generation
				lowerCAmelCase_     :							List[Any]             =    7 - int(f'''{left_neighbor}{cells[time][i]}{right_neighbor}'''   , 2 )
				next_generation.append(rule[situation] )
		return next_generation

def 	__lowerCamelCase			(						__UpperCamelCase )		->					Image.Image:

		"""simple docstring"""







		lowerCAmelCase_     :							List[str]             =    Image.new("RGB"   , (len(cells[0] ), len(__UpperCamelCase )) )
		lowerCAmelCase_     :							List[str]             =    img.load()
		# Generates image
		for w in range(img.width ):
				for h in range(img.height ):
						lowerCAmelCase_     :							Union[str, Any]             =    255 - int(255 * cells[h][w] )
						lowerCAmelCase_     :							List[str]             =    (color, color, color)
		return img


if __name__ == "__main__":
					lowercase__      =				bin(int(input("""Rule:\n""").strip()))[2:]
					lowercase__      =				format_ruleset(int(rule_num))
					for time in range(16):
										CELLS.append(new_generation(CELLS, rule, time))
					lowercase__      =				generate_image(CELLS)
					# Uncomment to save the image
					# img.save(f"rule_{rule_num}.png")
					img.show()
