10_jolts.py 567 B

1234567891011121314151617181920
  1. #!/usr/bin/env python3
  2. import sys
  3. from functools import lru_cache
  4. def mul_diffs(adapters):
  5. seq = [0] + sorted(adapters)
  6. diffs = [seq[i + 1] - seq[i] for i in range(len(seq) - 1)] + [3]
  7. return diffs.count(1) * diffs.count(3)
  8. def arrangements(adapters):
  9. @lru_cache(maxsize=4)
  10. def ways(jo):
  11. return jo in exists and \
  12. (jo <= 3) + ways(jo - 1) + ways(jo - 2) + ways(jo - 3)
  13. exists = set(adapters)
  14. return ways(max(adapters))
  15. adapters = list(map(int, sys.stdin))
  16. print(mul_diffs(adapters))
  17. print(arrangements(adapters))