import argparse from typing import List, Set, NamedTuple import functools parser = argparse.ArgumentParser() parser.add_argument("ifile", type=argparse.FileType('r')) args = parser.parse_args() fish = [int(x) for x in args.ifile.readline().split(',')] class FishState: all_fish: List[int] new_fish: int def nextGeneration(all_fish: List[int]): num_new = functools.reduce(lambda new, fish: new if fish > 0 else new + 1, all_fish, 0) age_fish = list(map(lambda fish: fish - 1 if fish > 0 else 6, all_fish)) return age_fish + [8] * num_new #print(len(functools.reduce(lambda state, _: nextGeneration(state), range(0, 80), fish))) print(len(functools.reduce(lambda state, _: nextGeneration(state), range(0, 80), fish)))