Do days 5 and 6.
This commit is contained in:
49
d4.py
49
d4.py
@@ -1,36 +1,65 @@
|
||||
from string import ascii_lowercase, ascii_uppercase, digits
|
||||
import re
|
||||
|
||||
EXAMPLE = """
|
||||
|
||||
Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53
|
||||
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
|
||||
Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1
|
||||
Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83
|
||||
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
|
||||
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11
|
||||
"""
|
||||
|
||||
def clean(text: str) -> list[str]:
|
||||
return list(filter(lambda l: l.strip() != "", text.splitlines()))
|
||||
|
||||
def solve(lines: list[str]):
|
||||
s = 0
|
||||
res = 0
|
||||
for (i, line) in enumerate(lines):
|
||||
print(i, line)
|
||||
return s
|
||||
c, s = line.split(":")
|
||||
w, y = s.split("|")
|
||||
w = set([int(c) for c in w.strip().split()])
|
||||
y = set([int(c) for c in y.strip().split()])
|
||||
z = w.intersection(y)
|
||||
|
||||
if z:
|
||||
ps = 1
|
||||
else:
|
||||
ps = 0
|
||||
for _ in range(len(z) - 1):
|
||||
ps *= 2
|
||||
res += ps
|
||||
return res
|
||||
|
||||
def solve2(lines: list[str]):
|
||||
s = 0
|
||||
res = 0
|
||||
matches = []
|
||||
for (i, line) in enumerate(lines):
|
||||
print(i, line)
|
||||
return s
|
||||
c, s = line.split(":")
|
||||
w, y = s.split("|")
|
||||
w = set([int(c) for c in w.strip().split()])
|
||||
y = set([int(c) for c in y.strip().split()])
|
||||
z = w.intersection(y)
|
||||
matches.append(len(z))
|
||||
|
||||
scratchcards = list(range(len(matches)))
|
||||
while scratchcards:
|
||||
sc = scratchcards.pop()
|
||||
res += 1
|
||||
for i in range(matches[sc]):
|
||||
if sc + i + 1 < len(matches):
|
||||
scratchcards.append(sc + i + 1)
|
||||
return res
|
||||
|
||||
def main():
|
||||
example = clean(EXAMPLE)
|
||||
print("Example 1:", solve(example))
|
||||
return
|
||||
|
||||
data = clean(open("i4.txt").read())
|
||||
print("Solution 1:", solve(data))
|
||||
return
|
||||
|
||||
example = clean(EXAMPLE)
|
||||
print("Example 2:", solve2(example))
|
||||
return
|
||||
|
||||
data = clean(open("i4.txt").read())
|
||||
print("Solution 2:", solve2(data))
|
||||
|
||||
Reference in New Issue
Block a user