Solution to problem 9 in Python

This commit is contained in:
David Doblas Jiménez 2022-04-15 11:35:51 +02:00
parent e1686754a5
commit a9feacf6fb

View File

@ -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()