Skip to content

Commit 35e43dc

Browse files
committed
feat: 2024 day 22
1 parent 8c25495 commit 35e43dc

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed

2024/22a.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from aoc import *
2+
3+
4+
def main(infi: str):
5+
inp = load_ints(infi)
6+
s = 0
7+
for n in inp:
8+
for i in range(2000):
9+
n = (n * 64 ^ n) % 16777216
10+
n = (n // 32 ^ n) % 16777216
11+
n = (n * 2048 ^ n) % 16777216
12+
s += n
13+
return s
14+
15+
16+
DAY = 22
17+
FILE_TEST = f"{DAY}_testa.txt"
18+
# FILE_TEST = f"{DAY}_testb.txt"
19+
FILE_EXP = f"{DAY}_exp.txt"
20+
FILE = f"{DAY}.txt"
21+
# test_and_submit(main, FILE_TEST, FILE_EXP, FILE, DAY)
22+
# print(main(FILE_TEST))
23+
print(main(FILE))

2024/22b.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from aoc import *
2+
from itertools import pairwise, starmap
3+
from more_itertools import windowed
4+
5+
6+
def main(infi: str):
7+
inp = load_ints(infi)
8+
all_prices = []
9+
all_diffs = []
10+
maps = []
11+
for n in inp:
12+
prices = []
13+
prices.append(n % 10)
14+
# sequence to number of bananas
15+
m = {}
16+
for i in range(2000):
17+
n = ((n * 64) ^ n) % 16777216
18+
n = ((n // 32) ^ n) % 16777216
19+
n = ((n * 2048) ^ n) % 16777216
20+
prices.append(n % 10)
21+
all_prices.append(prices)
22+
all_diffs.append(list(starmap(lambda x, y: y - x, pairwise(prices))))
23+
for seq, bananas in zip(windowed(all_diffs[-1], 4), prices[4:]):
24+
if seq not in m:
25+
m[seq] = bananas
26+
maps.append(m)
27+
possible_seq = set(key for m in maps for key in m)
28+
total_bananas = {
29+
seq: sum(m.get(seq, 0) for m in maps) for seq in possible_seq
30+
}
31+
return max(total_bananas.items(), key=lambda x: x[1])[1]
32+
33+
34+
DAY = 22
35+
FILE_TEST = f"{DAY}_testa.txt"
36+
FILE_TEST = f"{DAY}_testb.txt"
37+
FILE_EXP = f"{DAY}_exp.txt"
38+
FILE = f"{DAY}.txt"
39+
# test_and_submit(main, FILE_TEST, FILE_EXP, FILE, DAY)
40+
# print(main(FILE_TEST))
41+
print(main(FILE))

README.org

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* Personal Stats 2024
55
| Day | Time | Rank | Score | Time | Rank | Score |
66
|-----+----------+------+-------+----------+-------+-------|
7+
| 22 | 00:07:06 | 766 | 0 | 05:23:29 | 7143 | 0 |
78
| 19 | 01:44:22 | 6641 | 0 | 01:50:06 | 5444 | 0 |
89
| 17 | 00:27:08 | 1748 | 0 | 07:06:10 | 5688 | 0 |
910
| 15 | 00:32:17 | 2397 | 0 | 02:59:49 | 4379 | 0 |

0 commit comments

Comments
 (0)