from halo import Halo from argparse import ArgumentParser spinner = Halo(text="Blinking all the stones", spinner="dots") def main(input, iterations): spinner.start() input_list: list = input.split(" ") for _ in range(iterations): new_stones = [] for num in input_list: if num == '0': new_stones.extend(["1"]) elif len(num) % 2 == 0: half = len(num) // 2 left_half = str(int(num[:half])) right_half = str(int(num[half:])) new_stones.extend([left_half, right_half]) else: new_stones.extend([str(int(num)*2024)]) input_list = new_stones return len(input_list) if __name__ == "__main__": args = ArgumentParser( prog="Advend of Code Day 11", description="Solves the puzzle for day 11" ) args.add_argument("-p", "--part") args.add_argument("-f", "--file") args = args.parse_args() input_text = open(args.file, 'r').read() iterations = 25 if args.part == "1" else 75 if args.part == "2" else None answer = main(input_text, iterations) spinner.succeed(str(answer))