From c81f9a4d99e79ccb01e9c79a4c0f1904dbb523f6 Mon Sep 17 00:00:00 2001
From: chylex <contact@chylex.com>
Date: Sun, 4 Dec 2022 02:43:30 +0100
Subject: [PATCH] Add 2022 - Day 3 - Part 2

---
 2022/03/main.py | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/2022/03/main.py b/2022/03/main.py
index 3e82655..e23bdbb 100644
--- a/2022/03/main.py
+++ b/2022/03/main.py
@@ -1,4 +1,4 @@
-from itertools import chain
+from itertools import chain, zip_longest
 
 from utils.input import read_input_lines
 
@@ -22,5 +22,13 @@ def get_priority(item: chr) -> int:
         raise ValueError(f"Invalid item: {item}")
 
 
-total_priority = sum(map(get_priority, misplaced_items))
-print(f"Total priority: {total_priority}")
+total_misplaced_priority = sum(map(get_priority, misplaced_items))
+print(f"Total misplaced item priority: {total_misplaced_priority}")
+
+line_iterator = iter(lines)
+rucksacks_per_group = zip_longest(line_iterator, line_iterator, line_iterator)
+rucksack_items_per_group = (list(set(item) for item in rucksack) for rucksack in rucksacks_per_group)
+common_items_per_group = (set.intersection(*rucksack_items) for rucksack_items in rucksack_items_per_group)
+badges = chain.from_iterable(common_items_per_group)
+total_badge_priority = sum(map(get_priority, badges))
+print(f"Total badge priority: {total_badge_priority}")