|
@@ -0,0 +1,35 @@
|
|
1
|
+#!/usr/bin/python
|
|
2
|
+
|
|
3
|
+import re
|
|
4
|
+
|
|
5
|
+with open('9.txt', 'r') as file:
|
|
6
|
+ input = file.read()
|
|
7
|
+
|
|
8
|
+FUNC = max # min for part 1
|
|
9
|
+
|
|
10
|
+distances = {}
|
|
11
|
+places = {}
|
|
12
|
+
|
|
13
|
+for line in input.splitlines():
|
|
14
|
+ (source, dest, distance) = re.match('^(.*?) to (.*?) = ([0-9]+)$', line).group(1, 2, 3)
|
|
15
|
+ distances[(source, dest)] = int(distance)
|
|
16
|
+ distances[(dest, source)] = int(distance)
|
|
17
|
+ places[dest] = True
|
|
18
|
+ places[source] = True
|
|
19
|
+
|
|
20
|
+places = places.keys()
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+def without(list, item):
|
|
24
|
+ return [x for x in list if x != item]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+def find_shortest(current, to_visit):
|
|
28
|
+ if len(to_visit) == 0:
|
|
29
|
+ return 0
|
|
30
|
+
|
|
31
|
+ return FUNC([distances[(current, target)] +
|
|
32
|
+ find_shortest(target, without(to_visit, target))
|
|
33
|
+ for target in to_visit])
|
|
34
|
+
|
|
35
|
+print(FUNC([find_shortest(place, without(places, place)) for place in places]))
|