13_seating.py 730 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/env python3
  2. import sys
  3. import re
  4. from collections import defaultdict
  5. from itertools import permutations
  6. graph = defaultdict(lambda: defaultdict(int))
  7. pat = re.compile(r'(\w+) would (gain|lose) (\d+) .* to (\w+)\.')
  8. for line in sys.stdin:
  9. a, sign, diff, b = pat.match(line).groups()
  10. diff = int(diff) * (-1 if sign == 'lose' else 1)
  11. graph[a][b] += diff
  12. graph[b][a] += diff
  13. def score(people):
  14. score = graph[people[0]][people[-1]]
  15. for i in range(len(people) - 1):
  16. score += graph[people[i]][people[i + 1]]
  17. return score
  18. def bestscore(people):
  19. return max(map(score, permutations(people)))
  20. everyone = list(graph.keys())
  21. print(bestscore(everyone))
  22. print(bestscore(everyone + ['me']))