diff --git a/src/Year_2015/P9.py b/src/Year_2015/P9.py index 8cfcf1d..df5d996 100644 --- a/src/Year_2015/P9.py +++ b/src/Year_2015/P9.py @@ -1,3 +1,34 @@ +# --- Day 9: All in a Single Night --- + +# Every year, Santa manages to deliver all of his presents in a single night. + +# This year, however, he has some new locations to visit; his elves have +# provided him the distances between every pair of locations. He can start and +# end at any two (different) locations he wants, but he must visit each +# location exactly once. What is the shortest distance he can travel to achieve +# this? + +# For example, given the following distances: + +# London to Dublin = 464 +# London to Belfast = 518 +# Dublin to Belfast = 141 + +# The possible routes are therefore: + +# Dublin -> London -> Belfast = 982 +# London -> Dublin -> Belfast = 605 +# London -> Belfast -> Dublin = 659 +# Dublin -> Belfast -> London = 659 +# Belfast -> Dublin -> London = 605 +# Belfast -> London -> Dublin = 982 + +# The shortest of these is London -> Dublin -> Belfast = 605, and so the answer +# is 605 in this example. + +# What is the distance of the shortest route? + + from itertools import permutations import networkx as nx @@ -21,5 +52,29 @@ for f, t in permutations(cycle, 2): if len(path) == len(cycle) - 1: paths.append(path_weight(G, path, weight="weight")) -print(f"Solution part 1: {min(paths)}") -print(f"Solution part 2: {max(paths)}") + +def part_1() -> None: + print(f"Solution part 1: {min(paths)}") + + +# --- Part Two --- + +# The next year, just to show off, Santa decides to take the route with the +# longest distance instead. + +# He can still start and end at any two (different) locations he wants, and he +# still must visit each location exactly once. + +# For example, given the distances above, the longest route would be 982 via +# (for example) Dublin -> London -> Belfast. + +# What is the distance of the longest route? + + +def part_2() -> None: + print(f"Solution part 2: {max(paths)}") + + +if __name__ == "__main__": + part_1() + part_2()