22_cluster.py 662 B

123456789101112131415161718192021222324
  1. #!/usr/bin/env python3
  2. import sys
  3. import re
  4. from collections import namedtuple
  5. from itertools import combinations
  6. Node = namedtuple('Node', 'x, y, size, used, avail')
  7. def parse(f):
  8. for line in f:
  9. if line.startswith('/'):
  10. x, y, size, used, avail, usep = map(int, re.findall(r'\d+', line))
  11. assert used + avail == size
  12. yield Node(x, y, size, used, avail)
  13. def viable_pairs(nodes):
  14. for a, b in combinations(nodes, 2):
  15. if 0 < a.used <= b.avail:
  16. yield a, b
  17. elif 0 < b.used <= a.avail:
  18. yield b, a
  19. nodes = list(parse(sys.stdin))
  20. print(sum(1 for pair in viable_pairs(nodes)))