summaryrefslogtreecommitdiff
path: root/2025/day03.py
diff options
context:
space:
mode:
Diffstat (limited to '2025/day03.py')
-rwxr-xr-x2025/day03.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/2025/day03.py b/2025/day03.py
new file mode 100755
index 0000000..d18ac87
--- /dev/null
+++ b/2025/day03.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+from functools import reduce
+from re import findall
+from copy import deepcopy
+import sys
+# import numpy as np
+
+filename = sys.argv[1] if len(sys.argv) == 2 \
+ else "in/" + sys.argv[0].split('/')[-1].rstrip(".py") + ".pzl"
+data = open(filename).read()
+lines = data.rstrip('\n').split('\n')
+# print(lines)
+
+res1 = 0
+res2 = 0
+
+def max1(arr):
+ for n in reversed(range(0,100)):
+ left = n // 10
+ right = n % 10
+ if left in arr[:-1]:
+ if right in arr[arr.index(left)+1:]:
+ return n
+ assert False
+
+def max2(arr, rem):
+ if rem == 1:
+ return max(arr)
+ rem -= 1
+
+ left = sorted(arr[:-rem], reverse=True)[0]
+ right = arr[arr.index(left)+1:]
+ return 10**rem*left + max2(right, rem)
+
+for line in lines:
+ nums = [int(i) for i in line]
+ res1 += max1(nums)
+ res2 += max2(nums, 12)
+
+print('res1:', res1)
+print('res2:', res2)
+