04_guards.py 646 B

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