Skip to content

Commit 65bbf95

Browse files
committed
Completed day 22 of year 2024
1 parent 3ce43d4 commit 65bbf95

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

2024/22.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
4+
split_data = True
5+
completed = True
6+
raw_data = None # Not To be touched
7+
8+
def part1(data):
9+
total = 0
10+
for initial in data:
11+
secret = int(initial)
12+
for _ in range(2000):
13+
secret = ((secret * 64) ^ secret) % 16777216
14+
secret = ((secret // 32) ^ secret) % 16777216
15+
secret = ((secret * 2048) ^ secret) % 16777216
16+
total += secret
17+
18+
return total
19+
20+
def part2(data):
21+
sequence = {}
22+
for initial in data:
23+
secret = int(initial)
24+
prev5, prev4, prev3, prev2, prev1 = None, None, None, None, secret % 10
25+
monkey_sequence = set()
26+
for _ in range(2000):
27+
secret = ((secret * 64) ^ secret) % 16777216
28+
secret = ((secret // 32) ^ secret) % 16777216
29+
secret = ((secret * 2048) ^ secret) % 16777216
30+
prev5, prev4, prev3, prev2, prev1 = prev4, prev3, prev2, prev1, secret % 10
31+
if prev5 is not None:
32+
# We can now calculate the previous four sequence:
33+
seq = f"{prev4-prev5},{prev3-prev4},{prev2-prev3},{prev1-prev2}"
34+
if seq not in monkey_sequence: sequence[seq] = sequence.get(seq, 0) + prev1
35+
monkey_sequence.add(seq)
36+
37+
return max(sequence.values())

0 commit comments

Comments
 (0)