summaryrefslogtreecommitdiffstats
path: root/3.py
diff options
context:
space:
mode:
authorTomasz Kramkowski <tomasz@kramkow.ski>2022-12-07 12:57:36 +0000
committerTomasz Kramkowski <tomasz@kramkow.ski>2022-12-07 12:57:36 +0000
commitd9a97e9bf28cf91f1a7e57f1298b7c742e25ed56 (patch)
tree999464f801480565733c5223b020b2d762140b00 /3.py
downloadaoc2022-d9a97e9bf28cf91f1a7e57f1298b7c742e25ed56.tar.gz
aoc2022-d9a97e9bf28cf91f1a7e57f1298b7c742e25ed56.tar.xz
aoc2022-d9a97e9bf28cf91f1a7e57f1298b7c742e25ed56.zip
days 1-7
Diffstat (limited to '3.py')
-rw-r--r--3.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/3.py b/3.py
new file mode 100644
index 0000000..e7bb2d1
--- /dev/null
+++ b/3.py
@@ -0,0 +1,23 @@
+with open('3.in') as f:
+ rucksacks = [line.rstrip() for line in f]
+
+def priority(itm):
+ if itm.islower():
+ return ord(common) - ord('a') + 1
+ else:
+ return ord(common) - ord('A') + 27
+
+total = 0
+for rucksack in rucksacks:
+ half = len(rucksack) // 2
+ a, b = set(rucksack[:half]), set(rucksack[half:])
+ common = set.intersection(a, b).pop()
+ total += priority(common)
+print(total)
+
+total = 0
+for i in range(0, len(rucksacks), 3):
+ a, b, c = map(set, rucksacks[i:i+3])
+ common = set.intersection(a, set.intersection(b, c)).pop()
+ total += priority(common)
+print(total)