summaryrefslogtreecommitdiffstats
path: root/day_18.py
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2023-12-21 01:18:42 -0600
committerToby Vincent <tobyv@tobyvin.dev>2023-12-21 01:18:42 -0600
commitafb41b247fcc23509d63b5795dfb8c85a317c6f1 (patch)
tree49c3eeff68af10704e9d16b47e480f6ded1e2f32 /day_18.py
parent6f88481aa6242007d1815060388f530be4a13b81 (diff)
perf(wip): attempt to improve day 18day18
Diffstat (limited to 'day_18.py')
-rwxr-xr-xday_18.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/day_18.py b/day_18.py
new file mode 100755
index 0000000..7874652
--- /dev/null
+++ b/day_18.py
@@ -0,0 +1,58 @@
+#!/usr/bin/python3
+
+inp = open("input/day_18.txt")
+dat = inp.read().strip()
+
+pos = (0, 0)
+sum1 = 0
+sum2 = 0
+sum_dir = 0
+
+pos_corr = (0, 0)
+sum1_corr = 0
+sum2_corr = 0
+sum_dir_corr = 0
+
+for line in dat.split("\n"):
+ d, n, col = line.split()
+ match d:
+ case "L":
+ direction = (-1, 0)
+ case "R":
+ direction = (1, 0)
+ case "U":
+ direction = (0, -1)
+ case "D":
+ direction = (0, 1)
+ length = int(n)
+ next_pos = (pos[0] + direction[0] * length, pos[1] + direction[1] * length)
+ sum1 += (pos[0]) * (next_pos[1])
+ sum2 += (pos[1]) * (next_pos[0])
+ sum_dir += length
+ pos = next_pos
+ cleaned = col.removeprefix("(#").removesuffix(")")
+ corr_len = int(cleaned[:5], base=16)
+ match cleaned[5]:
+ case "0":
+ direction_corr = (1, 0)
+ case "1":
+ direction_corr = (0, 1)
+ case "2":
+ direction_corr = (-1, 0)
+ case "3":
+ direction_corr = (0, -1)
+ next_pos_corr = (
+ pos_corr[0] + direction_corr[0] * corr_len,
+ pos_corr[1] + direction_corr[1] * corr_len,
+ )
+ sum1_corr = sum1_corr + (pos_corr[0]) * (next_pos_corr[1])
+ sum2_corr = sum2_corr + (pos_corr[1]) * (next_pos_corr[0])
+ sum_dir_corr += corr_len
+ pos_corr = next_pos_corr
+
+area = abs(sum1 - sum2) / 2
+print(area + sum_dir / 2 + 1)
+
+
+area_corr = abs(sum1_corr - sum2_corr) / 2
+print(area_corr + sum_dir_corr / 2 + 1)