浏览代码

Solve 2022 day 3 part 2

Jonatan Gezelius 3 年之前
父节点
当前提交
65537c1ce6
共有 1 个文件被更改,包括 30 次插入14 次删除
  1. 30 14
      2022/03/b.py

+ 30 - 14
2022/03/b.py

@@ -1,25 +1,41 @@
 import os, argparse
 
-def get_unique(line):
+def solve_task(backpacks):
+    group_size = 3
+    sum_of_priorities = 0
+
+    # Run once per group
+    for group_number in range(len(backpacks)//group_size):
+        group_backpacks = backpacks[group_number * group_size : (group_number + 1)*group_size]
+        # Special treatment for the first backpack
+        items_sieve = get_unique_items(group_backpacks[0])
+
+        # For the remaining packs..
+        for backpack in group_backpacks[1:]:
+            for item in list(items_sieve.keys()):
+                if item not in backpack:
+                    items_sieve.pop(item)
+        
+        # Simple error check
+        if len(items_sieve) != 1:
+            print("This is so wrong!")
+            quit()
+        
+        # Add the sole remaining item to the results
+        sum_of_priorities += get_priority(next(iter(items_sieve)))
+
+    print(sum_of_priorities)
+
+def get_unique_items(line):
     uniques = {}
     for c in line:
         uniques[c] = 1
-    return [d.key for d in uniques.items]
-
-
-def solve_task(lines):
-    duplicate_objects = []
-    priority_sum = 0
-    unique_group_items = {}
-    member_counter = 0
-    for line in lines:
-        pass
-    print(duplicate_objects)
-    print(priority_sum)
+    #return [k for k in uniques.keys()]
+    return uniques
 
 def get_priority(item):
     item_code = ord(item)
-    if item >= 'a' and item <= 'z':
+    if item >= 'a':
         return item_code - ord('a') + 1
     else:
         return item_code - ord('A') + 27