Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

21 lines
581B

  1. import collections
  2. import itertools
  3. happiness = collections.defaultdict(int)
  4. people = set()
  5. for line in df.read_text().splitlines():
  6. A, verb, N, B = re.findall(r'([A-Z][a-z]+|gain|lose|\d+)', line)
  7. happiness[A, B] = int(N) if verb == 'gain' else -int(N)
  8. people.update({A, B})
  9. def calc(seq):
  10. return sum(happiness[b, a] + happiness[b, c]
  11. for a, b, c in zip(seq[-1:] + seq[:-1], seq, seq[1:] + seq[:1])
  12. )
  13. ans1 = max(calc(combo) for combo in itertools.permutations(people))
  14. ans2 = max(calc(combo) for combo in itertools.permutations(people | {'me'}))