






from __future__ import annotations

from PIL import Image

# Define the first generation of cells
# fmt: off
snake_case			 =						[[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__	(   lowercase ):

  """simple docstring"""






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


def      lowerCamelCase__	(   lowercase  ,   lowercase  ,   lowercase ):

  """simple docstring"""






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


def      lowerCamelCase__	(   lowercase ):

  """simple docstring"""






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


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








'''simple docstring'''
from __future__ import annotations

from PIL import Image

# Define the first generation of cells
# fmt: off
lowerCAmelCase :  Union[str, Any]      =      [[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 						A_(			A		:						int):
							return [int(A) for c in f'''{ruleset:08}'''[:8]]







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







def 						A_(			A		:						list[list[int]]):
							UpperCamelCase					       =			Image.new('RGB'						,			(len(cells[0]), len(A)))
							UpperCamelCase					       =			img.load()
							# Generates image
							for w in range(img.width):
														for h in range(img.height):
																					UpperCamelCase					       =			255 - int(255 * cells[h][w])
																					UpperCamelCase					       =			(color, color, color)
							return img


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




