13_firewall.py 583 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/env python3
  2. import sys
  3. def parse(f):
  4. for line in f:
  5. depth, ran = map(int, line.split(': '))
  6. yield depth, ran
  7. def period(ran):
  8. return 2 * (ran - 1)
  9. def severity(ranges):
  10. return sum(depth * ran for depth, ran in ranges if depth % period(ran) == 0)
  11. def caught(ranges, delay):
  12. return any((depth + delay) % period(ran) == 0 for depth, ran in ranges)
  13. def find_delay(ranges):
  14. delay = 0
  15. while caught(ranges, delay):
  16. delay += 1
  17. return delay
  18. ranges = list(parse(sys.stdin))
  19. print(severity(ranges))
  20. print(find_delay(ranges))