04_guards.py 640 B

12345678910111213141516171819202122
  1. #!/usr/bin/env python3
  2. import sys, re
  3. patterns = {}
  4. for line in sorted(sys.stdin):
  5. minute, cmd, arg = re.search(r':(\d+)] (\w+) #?(\w+)', line).groups()
  6. if cmd == 'Guard':
  7. guard = int(arg)
  8. elif cmd == 'falls':
  9. start = int(minute)
  10. else:
  11. pat = patterns.setdefault(guard, [0] * 60)
  12. for i in range(start, int(minute)):
  13. pat[i] += 1
  14. def strategy(i, key):
  15. guard, pat = max(patterns.items(), key=lambda x: key(x[1]))
  16. bestmin = max(enumerate(pat), key=lambda x: x[1])[0]
  17. print('strategy %d:' % i, guard, '*', bestmin, '=', guard * bestmin)
  18. strategy(1, sum)
  19. strategy(2, max)