Skip to content

Commit 80aef8e

Browse files
author
rileythomp
committed
old aoc
1 parent 931fd97 commit 80aef8e

File tree

4 files changed

+190
-0
lines changed

4 files changed

+190
-0
lines changed

aoc15/20/main.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
import sys
3+
4+
data = open(sys.argv[1]).read()
5+
lines = data.split("\n")
6+
7+
def sum_factors(n):
8+
res = 0
9+
for i in range(1, int(n**0.5) + 1):
10+
if n % i == 0:
11+
res += i
12+
if i != n // i:
13+
res += n // i
14+
return res
15+
16+
cur = 1
17+
while True:
18+
if sum_factors(cur) * 10 >= 33100000:
19+
print(cur)
20+
break
21+
cur += 1
22+
23+
def sum_factors2(n):
24+
first = n//50 + 1
25+
sqrt = int(n**0.5) + 1
26+
res = 0
27+
for i in range(min(first, sqrt), max(first, sqrt)):
28+
if n % i == 0:
29+
res += i
30+
if i != n // i:
31+
res += n // i
32+
return res
33+
34+
cur = 1
35+
while True:
36+
if sum_factors2(cur) * 11 >= 33100000:
37+
print('ans', cur)
38+
break
39+
cur += 1
40+

aoc15/23/main.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import sys
2+
from itertools import permutations
3+
4+
data = open(sys.argv[1]).read()
5+
6+
lines = data.split("\n")
7+
8+
instructions = [line.split() for line in lines]
9+
10+
regs = {'a': 0, 'b': 0}
11+
12+
i = 0
13+
while i < len(instructions):
14+
instr = instructions[i][0]
15+
if instr in ('hlf', 'tpl', 'inc'):
16+
reg = instructions[i][1]
17+
match instr:
18+
case 'hlf': regs[reg] //= 2
19+
case 'tpl': regs[reg] *= 3
20+
case 'inc': regs[reg] += 1
21+
i += 1
22+
elif instr == 'jmp':
23+
i += int(instructions[i][1])
24+
elif instr in ('jie', 'jio'):
25+
reg_val = regs[instructions[i][1][0]]
26+
jmp = int(instructions[i][2])
27+
if instr == 'jie' and reg_val % 2 == 0:
28+
i += jmp
29+
elif instr == 'jio' and reg_val == 1:
30+
i += jmp
31+
else:
32+
i += 1
33+
34+
print(regs['b'])
35+
36+
regs = {'a': 1, 'b': 0}
37+
38+
i = 0
39+
while i < len(instructions):
40+
instr = instructions[i][0]
41+
if instr in ('hlf', 'tpl', 'inc'):
42+
reg = instructions[i][1]
43+
match instr:
44+
case 'hlf': regs[reg] //= 2
45+
case 'tpl': regs[reg] *= 3
46+
case 'inc': regs[reg] += 1
47+
i += 1
48+
elif instr == 'jmp':
49+
i += int(instructions[i][1])
50+
elif instr in ('jie', 'jio'):
51+
reg_val = regs[instructions[i][1][0]]
52+
jmp = int(instructions[i][2])
53+
if instr == 'jie' and reg_val % 2 == 0:
54+
i += jmp
55+
elif instr == 'jio' and reg_val == 1:
56+
i += jmp
57+
else:
58+
i += 1
59+
60+
print(regs['b'])

aoc15/25/main.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
def get_num(c, r):
2+
return (c*(c+1))//2 + (r-1)*c + ((r-1)*(r-2))//2
3+
4+
cache = {
5+
1: 20151125
6+
}
7+
8+
def f(n):
9+
if n in cache:
10+
return cache[n]
11+
fn = (cache[n-1]*252533)%33_554_393
12+
cache[n] = fn
13+
return fn
14+
15+
ans = 0
16+
for i in range(1, get_num(3029, 2947)+1):
17+
ans = f(i)
18+
print(ans)
19+

aoc20/25/main.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
card_pub_key = 5764801
2+
3+
door_pub_key = 17807724
4+
5+
6+
cache = {
7+
7: {
8+
0: 1
9+
}
10+
}
11+
12+
def transform(subject_num, loop_size):
13+
if subject_num not in cache:
14+
cache[subject_num] = {0: 1}
15+
if loop_size in cache[subject_num]:
16+
return cache[subject_num][loop_size]
17+
v = cache[subject_num][loop_size-1]
18+
v *= subject_num
19+
v %= 20201227
20+
cache[subject_num][loop_size] = v
21+
return v
22+
23+
door_loop_size = 11
24+
for i in range(1, door_loop_size+1):
25+
print(transform(7, i))
26+
print()
27+
28+
card_loop_size = 8
29+
for i in range(1, card_loop_size+1):
30+
print(transform(7, i))
31+
print()
32+
33+
# exit()
34+
35+
36+
for i in range(1, card_loop_size+1):
37+
print(transform(door_pub_key, i))
38+
print()
39+
40+
for i in range(1, door_loop_size+1):
41+
print(transform(card_pub_key, i))
42+
print()
43+
44+
######
45+
46+
card_pub_key = 5290733
47+
door_pub_key = 15231938
48+
49+
card_loop_size = None
50+
for i in range(1, 10_000_000):
51+
if transform(7, i) == card_pub_key:
52+
card_loop_size = i
53+
break
54+
print('card loop', card_loop_size)
55+
56+
door_loop_size = None
57+
for i in range(1, 10_000_000):
58+
if transform(7, i) == door_pub_key:
59+
door_loop_size = i
60+
break
61+
print('door loop', door_loop_size)
62+
63+
ans = 0
64+
for i in range(1, card_loop_size+1):
65+
ans = transform(door_pub_key, i)
66+
print(ans)
67+
68+
ans = 0
69+
for i in range(1, door_loop_size+1):
70+
ans = transform(card_pub_key, i)
71+
print(ans)

0 commit comments

Comments
 (0)