summaryrefslogtreecommitdiff
path: root/day4/example.py
diff options
context:
space:
mode:
authorFederico Igne <git@federicoigne.com>2022-06-23 19:06:22 +0100
committerFederico Igne <git@federicoigne.com>2022-06-23 19:06:22 +0100
commit120d53c0ff20574866ce10fa0538fb8b0dd2ef82 (patch)
tree4ac370f9b525c713635a6af09530f20758e91fb7 /day4/example.py
parent5d99706992101d684c9920475e2ecaab65ba21ba (diff)
downloadaoc-120d53c0ff20574866ce10fa0538fb8b0dd2ef82.tar.gz
aoc-120d53c0ff20574866ce10fa0538fb8b0dd2ef82.zip
Reorganize repository structure
Diffstat (limited to 'day4/example.py')
-rw-r--r--day4/example.py59
1 files changed, 0 insertions, 59 deletions
diff --git a/day4/example.py b/day4/example.py
deleted file mode 100644
index 4eac08a..0000000
--- a/day4/example.py
+++ /dev/null
@@ -1,59 +0,0 @@
1import sys
2
3infile = sys.argv[1] if len(sys.argv)>1 else '4.in'
4
5# parse input
6numbers = None
7B = []
8F = []
9board = []
10for line in open(infile):
11 line = line.strip()
12 if numbers is None:
13 numbers = [int(x) for x in line.split(',')]
14 else:
15 if line:
16 board.append([int(x) for x in line.split()])
17 else:
18 if board:
19 B.append(board)
20 board = []
21B.append(board)
22
23for b in B:
24 assert len(b)==5 and len(b[0])==5
25 F.append([[False for _ in range(5)] for _ in range(5)])
26
27WON = [False for _ in range(len(B))]
28for num in numbers:
29 for i in range(len(B)):
30 for r in range(5):
31 for c in range(5):
32 if B[i][r][c] == num:
33 F[i][r][c] = True
34
35 won = False
36 for r in range(5):
37 ok = True
38 for c in range(5):
39 if not F[i][r][c]:
40 ok = False
41 if ok:
42 won = True
43 for c in range(5):
44 ok = True
45 for r in range(5):
46 if not F[i][r][c]:
47 ok = False
48 if ok:
49 won = True
50 if won and not WON[i]:
51 WON[i] = True
52 nwin = len([j for j in range(len(B)) if WON[j]])
53 if nwin == 1 or nwin == len(B):
54 unmarked = 0
55 for r in range(5):
56 for c in range(5):
57 if not F[i][r][c]:
58 unmarked += B[i][r][c]
59 print(unmarked * num)