Created
December 3, 2022 12:08
-
-
Save dartharva/10d3795aab191852f4f97b1fb3205922 to your computer and use it in GitHub Desktop.
Advent of Code 2022, Day 3 - Simple, verbose python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
with open('input.txt', 'r') as file: | |
rucksacks = file.read().strip().split() | |
def priority(letter): | |
if letter.islower(): | |
return ord(letter) - ord('a') + 1 | |
else: | |
return ord(letter) - ord('A') + 27 | |
def common_items(rucksacks): | |
common_item_types = [] | |
for item in rucksacks: | |
c_1, c_2 = item[:len(item)//2], item[len(item)//2:] | |
unique = [] | |
for k in sorted(c_1): | |
if k not in unique: | |
unique.append(k) | |
for x in unique: | |
if x in sorted(c_2): | |
common_item_types.append(x) | |
return common_item_types | |
def badges(rucksacks): | |
badge_list = [] | |
for i in range(0, len(rucksacks), 3): | |
sack_1, sack_2, sack_3 = rucksacks[i:i+3] | |
badge = set(sack_1) & set(sack_2) & set(sack_3) | |
badge_list.append(badge.pop()) | |
return badge_list | |
common_item_priorities = [priority(i) for i in common_items(rucksacks)] | |
badge_priorities = [priority(i) for i in badges(rucksacks)] | |
print(sum(common_item_priorities), sum(badge_priorities)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment