Solutions to Advent of Code 2017 https://adventofcode.com/2017/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

24.py 891B

123456789101112131415161718192021
  1. with open('data/24.txt') as file:
  2. connectors = [tuple(map(int, line.strip().split('/'))) for line in file.readlines()]
  3. def search(connector, chain, available):
  4. possible = [c for c in available if c[0] == connector or c[1] == connector]
  5. if len(possible) == 0:
  6. return [chain]
  7. else:
  8. chains = []
  9. for p in possible:
  10. new_chain = list(chain) + [p]
  11. new_available = list(available)
  12. new_available.remove(p)
  13. chains += search(sum(p) - connector, new_chain, new_available)
  14. return chains
  15. chains = search(0, [], connectors)
  16. print(f'Part one: {max(sum(sum(p) for p in chain) for chain in chains)}')
  17. longest = max(len(chain) for chain in chains)
  18. print(f'Part two: {max(sum(sum(p) for p in chain) for chain in chains if len(chain) == longest)}')