part1.py 743 B

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