02_reactor.py 656 B

123456789101112131415161718192021222324
  1. #!/usr/bin/env python3
  2. import sys
  3. from itertools import compress, pairwise
  4. def safe_inc(report):
  5. return all(b - 3 <= a < b for a, b in pairwise(report))
  6. def safe(report):
  7. return safe_inc(report) or safe_inc(reversed(report))
  8. def masks(size):
  9. mask = [1] * size
  10. for i in range(size):
  11. mask[i - 1] = 1
  12. mask[i] = 0
  13. yield mask
  14. def safe_dampened(report):
  15. return safe(report) or any(safe(list(compress(report, mask)))
  16. for mask in masks(len(report)))
  17. reports = [list(map(int, line.split())) for line in sys.stdin]
  18. print(sum(map(safe, reports)))
  19. print(sum(map(safe_dampened, reports)))