04_cards.py 470 B

1234567891011121314151617
  1. #!/usr/bin/env python3
  2. import sys
  3. def matches(line):
  4. left, right = line.split(': ')[1].split(' | ')
  5. return len(set(left.split()) & set(right.split()))
  6. def accumulate(cards):
  7. count = [1] * len(cards)
  8. for i, m in enumerate(cards):
  9. for j in range(i + 1, min(i + 1 + m, len(count))):
  10. count[j] += count[i]
  11. return sum(count)
  12. cards = list(map(matches, sys.stdin))
  13. print(sum(int(2 ** (m - 1)) for m in cards))
  14. print(accumulate(cards))