summaryrefslogtreecommitdiff
path: root/2023/04/step1.py
diff options
context:
space:
mode:
Diffstat (limited to '2023/04/step1.py')
-rw-r--r--2023/04/step1.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/2023/04/step1.py b/2023/04/step1.py
new file mode 100644
index 0000000..6633b01
--- /dev/null
+++ b/2023/04/step1.py
@@ -0,0 +1,22 @@
+import argparse
+import re
+
+p = argparse.ArgumentParser()
+p.add_argument("file", type=argparse.FileType("r"), help="input file")
+options = p.parse_args()
+
+total = 0
+
+for line in options.file:
+ line = line.strip()
+ m = re.match(r"^Card +(\d+): (.*) \| (.*)$", line)
+ assert m
+ card = int(m.group(1))
+ win = set(int(s) for s in m.group(2).split())
+ mine = set(int(s) for s in m.group(3).split())
+ inter = win & mine
+ p = 1 << len(inter) >> 1
+ #print(card, win, mine, inter, p)
+ total += p
+
+print(total)