45 lines
936 B
Python
45 lines
936 B
Python
from tools.aoc import AOCDay
|
|
from typing import Any
|
|
|
|
|
|
def get_prio(char: str) -> int:
|
|
if ord(char) > 90:
|
|
return ord(char) - 96
|
|
else:
|
|
return ord(char) - 38
|
|
|
|
|
|
class Day(AOCDay):
|
|
inputs = [
|
|
[
|
|
(157, "input3_test"),
|
|
(7742, "input3_dennis"),
|
|
(7863, "input3"),
|
|
],
|
|
[
|
|
(70, "input3_test"),
|
|
(2276, "input3_dennis"),
|
|
(2488, "input3"),
|
|
]
|
|
]
|
|
|
|
def part1(self) -> Any:
|
|
es = 0
|
|
for line in self.getInput():
|
|
es += get_prio(line[:len(line)//2] & line[len(line)//2:])
|
|
|
|
return es
|
|
|
|
def part2(self) -> Any:
|
|
rucksacks = self.getInput()
|
|
es = 0
|
|
for g in range(len(rucksacks) // 3):
|
|
es += get_prio(rucksacks[g*3] & rucksacks[g*3+1] & rucksacks[g*3+2])
|
|
|
|
return es
|
|
|
|
|
|
if __name__ == '__main__':
|
|
day = Day(2022, 3)
|
|
day.run(verbose=True)
|