Solution to problem 9 in Python
This commit is contained in:
parent
e1686754a5
commit
a9feacf6fb
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user