blob: ea3c7fdccc103db9157690a22b9dc00f09768a34 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import re
L = [re.sub(" +", " ", l.strip()) for l in open("input").readlines()]
def solve1():
res = 0
for l in L:
ls = l.split(": ")
card = ls[0]
winning, have = [
list(map(int, a.split(" "))) for a in ls[1].split(" | ")
]
s = 0
i = True
for x in have:
if x in winning:
s = s + 1 if i else s * 2
i = False
res += s
print(res)
def solve2():
res = 0
dup = [1] * len(L)
for i, l in enumerate(L):
ls = l.split(": ")
card = ls[0]
winning, have = [
list(map(int, a.split(" "))) for a in ls[1].split(" | ")
]
s = 0
for x in have:
if x in winning:
s += 1
for j in range(i + 1, i + s + 1):
dup[j] += dup[i]
print(sum(dup))
solve1()
solve2()
|