aboutsummaryrefslogtreecommitdiff
path: root/python/018-max_path_sum_I.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/018-max_path_sum_I.py')
-rw-r--r--python/018-max_path_sum_I.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/python/018-max_path_sum_I.py b/python/018-max_path_sum_I.py
new file mode 100644
index 0000000..f091782
--- /dev/null
+++ b/python/018-max_path_sum_I.py
@@ -0,0 +1,36 @@
+triangle = [
+ [75],
+ [95, 64],
+ [17, 47, 82],
+ [18, 35, 87, 10],
+ [20, 4, 82, 47, 65],
+ [19, 1, 23, 75, 3, 34],
+ [88, 2, 77, 73, 7, 63, 67],
+ [99, 65, 4 , 28, 6, 16, 70, 92],
+ [41, 41, 26, 56, 83, 40, 80, 70, 33],
+ [41, 48, 72, 33, 47, 32, 37, 16, 94, 29],
+ [53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14],
+ [70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57],
+ [91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48],
+ [63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31],
+ [ 4, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 4, 23]
+]
+
+# très mauvaise récursion
+def walk_through(triangle, paths=[], x=0, y=0, path=[]):
+ if x == len(triangle):
+ if y+1 == len(triangle[-1]):
+ return paths
+ return [*paths, path]
+
+ new_path = [*path, triangle[x][y]]
+ return [
+ *walk_through(triangle, paths, x+1, y, new_path),
+ *walk_through(triangle, paths, x+1, y+1, new_path)
+ ]
+
+
+paths = walk_through(triangle)
+max_path_sum = max([sum(x) for x in paths])
+
+print(max_path_sum)