25_locks.py 464 B

1234567891011121314151617
  1. #!/usr/bin/env python3
  2. import sys
  3. def parse(f):
  4. locks = []
  5. keys = []
  6. for group in f.read().split('\n\n'):
  7. lines = group.split()
  8. ident = tuple(col.count('#') - 1 for col in zip(*lines))
  9. (keys, locks)[lines[0] == '#####'].append(ident)
  10. return locks, keys
  11. def fits(lock, key):
  12. return all(l + k <= 5 for l, k in zip(lock, key))
  13. locks, keys = parse(sys.stdin)
  14. print(sum(fits(lock, key) for lock in locks for key in keys))