solution.py 870 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/env python3
  2. import sys
  3. import time
  4. # ruleset
  5. days_after_respawn = 6
  6. days_after_spawn = 8
  7. bound = max(days_after_respawn, days_after_spawn)
  8. # helper function
  9. def consume(countdown):
  10. value = countdown[0]
  11. countdown[0] = 0
  12. return value
  13. # construct counter list and query input
  14. countdown = [0] * (bound + 1)
  15. for element in input().split(','): countdown[int(element)] += 1
  16. # simulate each day
  17. for day in range(128 if len(sys.argv) < 2 else int(sys.argv[1])):
  18. print(countdown)
  19. print(sum(countdown), 'fishies after', day, 'days')
  20. # extract respawns
  21. spawns = consume(countdown)
  22. # shift
  23. for i in range(bound):
  24. countdown[i] += countdown[i + 1]
  25. countdown[i + 1] = 0
  26. # apply previously extracted respawns
  27. countdown[days_after_respawn] += spawns
  28. countdown[days_after_spawn] += spawns
  29. #time.sleep(.01)