diff options
author | Toby Vincent <tobyv@tobyvin.dev> | 2023-12-21 01:18:42 -0600 |
---|---|---|
committer | Toby Vincent <tobyv@tobyvin.dev> | 2023-12-21 01:18:42 -0600 |
commit | afb41b247fcc23509d63b5795dfb8c85a317c6f1 (patch) | |
tree | 49c3eeff68af10704e9d16b47e480f6ded1e2f32 /day_18.py | |
parent | 6f88481aa6242007d1815060388f530be4a13b81 (diff) |
perf(wip): attempt to improve day 18day18
Diffstat (limited to 'day_18.py')
-rwxr-xr-x | day_18.py | 58 |
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) |