Skip to content

Commit 1fad4e3

Browse files
committed
2020 Day 15
1 parent d0643b1 commit 1fad4e3

File tree

6 files changed

+86
-0
lines changed

6 files changed

+86
-0
lines changed

2020/15.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
7,12,1,0,16,2

2020/15_test.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0,3,6

2020/15_test_2.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1,3,2

2020/15_test_3.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2,1,3

2020/15a.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from aocd import submit
2+
from aoc import *
3+
from collections import defaultdict
4+
5+
6+
def submita(answer):
7+
submit(answer, part="a", day=15, year=2020)
8+
9+
10+
def submitb(answer):
11+
submit(answer, part="b", day=15, year=2020)
12+
13+
14+
FILE = "15_test.txt"
15+
FILE = "15.txt"
16+
17+
18+
def main():
19+
inp = file(FILE)
20+
inp = [int(i) for i in inp.split(',')]
21+
d = defaultdict(list)
22+
last_spoken = 0
23+
for i in range(2020):
24+
if i < len(inp):
25+
last_spoken = inp[i]
26+
elif len(d[last_spoken]) == 2:
27+
last_spoken = d[last_spoken][1] - d[last_spoken][0]
28+
else:
29+
last_spoken = 0
30+
d[last_spoken].append(i)
31+
if len(d[last_spoken]) > 2:
32+
del d[last_spoken][0]
33+
out = last_spoken
34+
print(out)
35+
return
36+
input()
37+
print("submitting")
38+
submita(out)
39+
40+
41+
main()

2020/15b.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from aocd import submit
2+
from aoc import *
3+
from collections import defaultdict
4+
5+
6+
def submita(answer):
7+
submit(answer, part="a", day=15, year=2020)
8+
9+
10+
def submitb(answer):
11+
submit(answer, part="b", day=15, year=2020)
12+
13+
14+
FILE = "15_test.txt"
15+
FILE = "15.txt"
16+
17+
18+
def main():
19+
inp = file(FILE)
20+
inp = [int(i) for i in inp.split(',')]
21+
d = defaultdict(list)
22+
last_spoken = 0
23+
for i in range(30000000):
24+
if i < len(inp):
25+
last_spoken = inp[i]
26+
elif len(d[last_spoken]) == 2:
27+
last_spoken = d[last_spoken][1] - d[last_spoken][0]
28+
else:
29+
last_spoken = 0
30+
d[last_spoken].append(i)
31+
if len(d[last_spoken]) > 2:
32+
del d[last_spoken][0]
33+
out = last_spoken
34+
print(out)
35+
return
36+
input()
37+
print("submitting")
38+
submitb(out)
39+
40+
41+
main()

0 commit comments

Comments
 (0)