Skip to content

Commit 7cf1a14

Browse files
committedDec 11, 2020
Day 11
1 parent e89b5f6 commit 7cf1a14

File tree

5 files changed

+299
-0
lines changed

5 files changed

+299
-0
lines changed
 

‎2020/11.txt

+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
LLLLL.LLLLLLLLL.LLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL
2+
LLLLL.LL.L.LLLL.LLL..LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLL
3+
LLLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.L..LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.L.LLLLLLLLLL
4+
LLLLLLLLLL.LLLL.LLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL
5+
LLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLLL.LL.LLLLLL..LLLLLLLLLLLLL.LL.LLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL
6+
LLLLLLLLLL.LLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLL
7+
LLLLLL.LLL.LLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLL.LL.LLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLL
8+
.LL..LL.L..L.L...LL..L..L.L...LL..L...LL..LLLL.L.L.L.....L....L.LL...L.LL.LL....L...L..L....L....L
9+
LLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLL
10+
LLLLLLLLLL.LLLL.LLLL.LLL.L.LLLLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLL.LLLLLLLLLLL.LLLLLLL.LLLLLLL.LLLL
11+
LLLLL.LLLL.LLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL...LLLLLLLLLL.LLLLLLL
12+
LLLLLL.LLLLLLLL.LLLL.LLLLLLLL.LLLL.LLLLLLLLL..LLLL.L.LLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLL.LL
13+
L.L...L.....LLL.L..LL...L......L.LLL........LL..LLL..L.LLL....L..L.L.L..L..L.LL..L.......LL..L.L..
14+
LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
15+
LLLLLLLLL.LLLLL.LLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LL.LLLL.LLLLLLLLLL.LLLLLLLLL
16+
LLLLLLLLLL.LLLL.LLLL.LLLL.LLLLLLL.LLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLL.L.LLLLLLL.LLLLLLLLLLLL
17+
LLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLL.LLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL..LLLLLL.LLLL.LLLLLLL
18+
LLLLL.LLLL.LLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLL.LLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLL
19+
..L..L.L........LL.L.L..LLL........L....LL..LLL.LL....L.......LL.LLLL....L...L.LL........L.L......
20+
LLLLL.L.LL.LLLLLLLLL.LLLLL.LLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.L.LLLLLLLL.L
21+
LLLLL.LLLL.LLLL..LLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL
22+
.LLLLLLLLL.LLLL.LLLL..LLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLL.L.L..LLLL.LLLLLLLLLLLLLLLLLLLL
23+
LLLLL.LLLL.LLLL.LLLL.LLLLLLL.LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLL.LLLLL
24+
.....LL.L.LL...L..LL.LL..L...L..L.LL..LL..L.L..........L....L...L.L....L.L.L....LL.........LL..LL.
25+
LLLLL.LLLL.LLLL.LLLLLLLLLLLLLLLLLL.LLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.L.L.LLL.LLLLLLLLLLLL
26+
LLLLLLLLLL.LLLL.LLLL.LLLLL.LLLLLLLLLLLLLLL.LLLL.LLLL.LLLLLLL.LLLLLLLL.LLL.LLL.LLLLLLL.LLLLLLLLLLLL
27+
LLLLL.LLLL.LLLLLL.LL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LL.LLLLL..LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LL
28+
LLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLLL.LLLLLL.LL.LLLLLLLLLLLLLLL.L..LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLL
29+
LLLLL.LLLL.LLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLL.LLLLLLLLLLL.LLLLLLLLLLLL
30+
L..LL.L.......L.LL..L.....L..L.L..L.L...L....LLL..........LLL.LL......L.L..L.LL..L....LL..L.......
31+
LLLLL.LLLL.LLLL.LLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL
32+
LLLLL.LL.L.LLL..LLLL.LLLLL.LLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLL.
33+
LLLLL.LLLL.LLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLL.L.LLLLLLLLLL
34+
LLLLL.LLLL.LLLL.LLLL.LLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLL.LL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL
35+
LLLLL.LLLL.L.LL.LLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLL
36+
LLLLL.LLLL.LLLL.LLL..LLLLL.LLLLLL..LLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.L.LLLLL.LLLLLLLLLLLLLLLLLLLL
37+
LLLLLLLLLL.LLLL.LLLLLLLLLL.LLLL.L..LLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLL
38+
LLLLL.LLLL.LLLL.LLLL.LLLLLLLLLLLLL.LL.LLLLLL.L.LLLLL.LLLLLLLLLLLLLLL..LLLLLLL.LLLLLLLLLLLLLLLLLLLL
39+
...LLLLL..L...L..L..L.............L..L...L..L.L.L..LLL.L.....L.L.L.L.L..L.LL.L..L.L..LLL..LL...LLL
40+
LLLLL.LLLL.LLLL.LLLL.LLLLL.LLL.LLL.LLLLLLLLL.LL.LLLL.LLLL.LLLLLLLLLLL.LLLLLL..LLLLLLL.LLLLLLLLLLLL
41+
LLLLLLLLLL.L.LL.LLLLLL.LLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL..L.LLLL.LLLL.LL.LLLLLLL.LLLLLLLLLLLL
42+
.LLLLLLLLL.LLLL.LLLL.LLLLL.LL.LLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LL.LLLLLLLLL
43+
LLLLL.LLLL.LLLL.LLLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLL
44+
LLLL..LLLLLLLLL.LLLL.LL.LL..LLLLLL.LLLLLLL.L.LLLLLLL.LLL.LLLLL.LLLLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLL
45+
LLLLLL.LLL.LLLL.LLLL.LLLLL.LLL...LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLL
46+
LLLLL.LLLL.LLLL.LLLL.LLLLL.LLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLL.LL.LLL.LLLLL
47+
LLLLLLLLLLLLLLLLL.LL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLL
48+
LLLLLLLLLL..LLL.LLLL.LLLLL.LLLLLLL.LL.LLLLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLL
49+
.LL..L....L..LL....L.......L........LL......L...L..............L.L...L.L....LLLL.....L......LLL..L
50+
LLLLL.LLLL.LLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLL.LLL..LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL
51+
LLLLL.LLLLLLLLL.LLLLLLLLLL.LL.LLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLL.LLLLLLLLLLL.LLLLLLLLLLLL
52+
LLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLL.LL.LLLLLL.LLLLLL.LLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLL.LLLLLLL.LLLL
53+
LLLLL.LLLL.LLLL.LLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLL
54+
LLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLL..LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLL
55+
...L.L.L.LLL..L......LLL.L..L......L...LLL....L....L..LL.L.L..L..L......L.....LL.L.....L........L.
56+
LL.LLLLL.L.LLLL.LLLL.LLLLL.LLL.LLL.LLLLLLLLL.LLLLLLL.LLLLLLLL..LLLLLL.LLLLLLL.LLLLLLL.L.LLLLLLLLLL
57+
LLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLL.L.LLLLLL..LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL
58+
LLLLL.LLL..LLLLLLLLL.L.LLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLL
59+
LLLLL.LLL..LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LL..LLLLLLL.L.LLL.LL.LLLLL.LLLLLLLLLLLLLLLLLLLLLL
60+
LLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLL.LLLLLLL.LLLLLLL.L.LLLLLLLLLL
61+
LLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LL.
62+
LLLLL.LLLL.LLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LL
63+
LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLL..LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLL
64+
...L...L...L...LL...LL.L.L..LL..L....LL...LLLL.L........L......L..L....L.L....L...L.L.L.LLL.L..L.L
65+
LLLLL.L.LL.LLLL.LLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLL.LL.LL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLL
66+
LLLLL.LLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLL
67+
LLLLL.LLLL.LLLLLLLLL.LLLLL.LLLL.LL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL
68+
LLLLLLLLLL.LLLL.LLLL.LLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL
69+
LLLLL.LLLL.LLLL.LLLLLLLLLLLLLL.LLL.LLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLL
70+
LLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLL
71+
LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
72+
LLLLL.LLLLLLLLL.LL.L.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLL..LLLLLLLLLLLL
73+
LL.L...LL..LL..L..L.L....L...L..L..LL......LL.L.......L..LL........LL.LLLLL.......L.....LL.LL.....
74+
LLLLL.LLLLLLL.L.LLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL..LLLLLL.LLLLLLLLLLLL.LL.LLLLLLLLLLLL
75+
LLLLL.LLLLLLL.L.LLLL.LLLLL.LLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLL
76+
LLLLL.LLLL.LLLLLLLLLL.LLLL.L.LLLLL.LLLLLLLLL.LLLLLLL.LLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLL
77+
LLL.L.LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLL.LL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LLL
78+
..L.L....LL.LL.....L.LL......L.LL..LLLLLL......LL.L.LL.LLL...LLLL......L.L.L...LL..L..L..L...LL..L
79+
LLLLL.LLLLLLLLL.LLL..LLLLL.LLLLLLL.LLLLLLLLL.LLLLLLL..LLLLLLLL.LLLLLLLLL.LLLL.LLLLLLL.LLLLLLLL.LLL
80+
LLLL..LLLL.LLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL
81+
LLL.L.LLLL.LLLL.LLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLL.L.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLL.LL
82+
L.LL..LLLL.L.LLLLLLLLLLLLL.LLLLLLL.LLLLLLLL..LLL.LLL.LLLLLL.LL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLL
83+
LLLLL.LLLL.LL.L.LLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLL..LLLLLLL.LLLLLLL.LLLLLLLLLLLL
84+
L....L...L..L.L...L....L......L..LLL..L..LL.LL.L.L....L..L.L.LLL.L.LLLL.........L..LL.LLL......L..
85+
LLLLL.LLLL.LLLL.LLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLL.L
86+
LLLLL.LLL..LLLL.LLLL.LLLLL.LLLLLLL.LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLLL.LL
87+
LLLLL.LLLLLL.LL.LLLL.LLLLL.LLLLLLL.L.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL
88+
LLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLL.LL.LLLLLLLLLLLL.LLLLLLLLLLLL
89+
LLLLL.LLLL.LLLL.LLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL
90+
LLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLL

‎2020/11_test.txt

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
L.LL.LL.LL
2+
LLLLLLL.LL
3+
L.L.L..L..
4+
LLLL.LL.LL
5+
L.LL.LL.LL
6+
L.LLLLL.LL
7+
..L.L.....
8+
LLLLLLLLLL
9+
L.LLLLLL.L
10+
L.LLLLL.LL

‎2020/11a.py

+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
from aocd import submit
2+
from aoc import *
3+
from collections import Counter
4+
from copy import deepcopy
5+
6+
7+
def submita(answer):
8+
submit(answer, part="a", day=11, year=2020)
9+
10+
11+
def submitb(answer):
12+
submit(answer, part="b", day=11, year=2020)
13+
14+
15+
FILE = "11_test.txt"
16+
FILE = "11.txt"
17+
18+
19+
def print_map(li):
20+
return
21+
for i in range(1, len(li) - 1):
22+
for j in range(1, len(li[0]) - 1):
23+
print(li[i][j], end="")
24+
print()
25+
26+
27+
def check_coord(li):
28+
new_li = deepcopy(li)
29+
changed = 0
30+
for i in range(1, len(li) - 1):
31+
for j in range(1, len(li[0]) - 1):
32+
if li[i][j] == "L":
33+
around = Counter(
34+
(
35+
li[i - 1][j - 1],
36+
li[i - 1][j],
37+
li[i - 1][j + 1],
38+
li[i][j - 1],
39+
li[i][j + 1],
40+
li[i + 1][j - 1],
41+
li[i + 1][j],
42+
li[i + 1][j + 1],
43+
)
44+
)
45+
if "#" not in around:
46+
new_li[i][j] = "#"
47+
changed += 1
48+
if li[i][j] == "#":
49+
around = Counter(
50+
(
51+
li[i - 1][j - 1],
52+
li[i - 1][j],
53+
li[i - 1][j + 1],
54+
li[i][j - 1],
55+
li[i][j + 1],
56+
li[i + 1][j - 1],
57+
li[i + 1][j],
58+
li[i + 1][j + 1],
59+
)
60+
)
61+
if around.get("#", 0) >= 4:
62+
new_li[i][j] = "L"
63+
changed += 1
64+
return new_li, changed
65+
66+
67+
def main():
68+
inp = load_map_ll(FILE)
69+
out = 0
70+
inp.insert(0, ["."] * len(inp[0]))
71+
inp.append(["."] * len(inp[0]))
72+
for l in inp:
73+
l.insert(0, ".")
74+
l.append(".")
75+
changed = 1
76+
while changed != 0:
77+
print_map(inp)
78+
inp, changed = check_coord(inp)
79+
print_map(inp)
80+
c = Counter()
81+
for i in range(1, len(inp) - 1):
82+
for j in range(1, len(inp[0]) - 1):
83+
c.update(inp[i][j])
84+
print(c["#"])
85+
input()
86+
print("submitting")
87+
submita(c["#"])
88+
89+
90+
main()

‎2020/11b.py

+100
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
from aocd import submit
2+
from aoc import *
3+
from collections import Counter
4+
from copy import deepcopy
5+
6+
7+
def submita(answer):
8+
submit(answer, part="a", day=11, year=2020)
9+
10+
11+
def submitb(answer):
12+
submit(answer, part="b", day=11, year=2020)
13+
14+
15+
FILE = "11_test.txt"
16+
FILE = "11.txt"
17+
18+
19+
def print_map(li):
20+
return
21+
for i in range(1, len(li) - 1):
22+
for j in range(1, len(li[0]) - 1):
23+
print(li[i][j], end="")
24+
print()
25+
26+
27+
def first_seat_in(li, i, j, a, b):
28+
i += a
29+
j += b
30+
while i != 0 and i != len(li) - 1 and j != 0 and j != len(li[0]) - 1:
31+
if li[i][j] != ".":
32+
return li[i][j]
33+
i += a
34+
j += b
35+
return "."
36+
37+
38+
def check_coord(li):
39+
new_li = deepcopy(li)
40+
changed = 0
41+
for i in range(1, len(li) - 1):
42+
for j in range(1, len(li[0]) - 1):
43+
if li[i][j] == "L":
44+
around = Counter(
45+
(
46+
first_seat_in(li, i, j, -1, -1),
47+
first_seat_in(li, i, j, -1, 0),
48+
first_seat_in(li, i, j, -1, 1),
49+
first_seat_in(li, i, j, 0, -1),
50+
first_seat_in(li, i, j, 0, 1),
51+
first_seat_in(li, i, j, 1, -1),
52+
first_seat_in(li, i, j, 1, 0),
53+
first_seat_in(li, i, j, 1, 1),
54+
)
55+
)
56+
if "#" not in around:
57+
new_li[i][j] = "#"
58+
changed += 1
59+
if li[i][j] == "#":
60+
around = Counter(
61+
(
62+
first_seat_in(li, i, j, -1, -1),
63+
first_seat_in(li, i, j, -1, 0),
64+
first_seat_in(li, i, j, -1, 1),
65+
first_seat_in(li, i, j, 0, -1),
66+
first_seat_in(li, i, j, 0, 1),
67+
first_seat_in(li, i, j, 1, -1),
68+
first_seat_in(li, i, j, 1, 0),
69+
first_seat_in(li, i, j, 1, 1),
70+
)
71+
)
72+
if around.get("#", 0) >= 5:
73+
new_li[i][j] = "L"
74+
changed += 1
75+
return new_li, changed
76+
77+
78+
def main():
79+
inp = load_map_ll(FILE)
80+
inp.insert(0, ["."] * len(inp[0]))
81+
inp.append(["."] * len(inp[0]))
82+
for l in inp:
83+
l.insert(0, ".")
84+
l.append(".")
85+
changed = 1
86+
while changed != 0:
87+
print_map(inp)
88+
inp, changed = check_coord(inp)
89+
print_map(inp)
90+
c = Counter()
91+
for i in range(1, len(inp) - 1):
92+
for j in range(1, len(inp[0]) - 1):
93+
c.update(inp[i][j])
94+
print(c["#"])
95+
input()
96+
print("submitting")
97+
submitb(c["#"])
98+
99+
100+
main()

‎2020/aoc.py

+9
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ def load_map(path):
3030
return list(map(lambda x: x.rstrip(), lines))
3131

3232

33+
def load_map_ll(path):
34+
"""Return list of lists of one char strings ("2D array") from the file at
35+
`path`
36+
"""
37+
with open(path) as f:
38+
lines = f.readlines()
39+
return list(map(lambda x: list(x.rstrip()), lines))
40+
41+
3342
def load_ints(path):
3443
"""
3544
Return a list of ints loaded from file at `path`

0 commit comments

Comments
 (0)
Please sign in to comment.