Browse Source

Day 22 Part 1

master
Maya Herrscher 5 months ago
parent
commit
fcf7546442
  1. 0
      2024/day22/challenge
  2. 44
      2024/day22/code.py
  3. 4
      2024/day22/example
  4. 1
      2024/day22/example1
  5. 4
      2024/day22/example2
  6. 1515
      2024/day22/input

0
2024/day22/challenge

44
2024/day22/code.py

@ -0,0 +1,44 @@
#!/usr/bin/env python3
import sys
def mix_and_prune(secret, result):
return (secret ^ result) % 16777216
def prg(secret):
nsec = mix_and_prune(secret, secret * 64)
nsec = mix_and_prune(nsec, nsec // 32)
return mix_and_prune(nsec, nsec * 2048)
if __name__ == '__main__':
nums = [int(line.strip('\n')) for line in open(sys.argv[1])]
# challenge 1
res1 = 0
changes, values = {}, {}
for n in nums:
secret = n
changes[n] = [0] * 2000
values[n] = [0] * 2000
ob = int(str(secret)[-1])
for i in range(2000):
secret = prg(secret)
bananas = int(str(secret)[-1])
changes[n][i] = bananas - ob
values[n][i] = bananas
ob = bananas
res1 += secret
print(f"challenge 1:\n{res1}\n")
# for i, c in enumerate(changes[123][3:10]):
# if c > 0: print(changes[123][i:i+4])
print(changes[123][:10])
# challenge 2
res2 = ""
print(f"challenge 2:\n{res2}")

4
2024/day22/example

@ -0,0 +1,4 @@
1
10
100
2024

1
2024/day22/example1

@ -0,0 +1 @@
123

4
2024/day22/example2

@ -0,0 +1,4 @@
1
2
3
2024

1515
2024/day22/input

File diff suppressed because it is too large
Loading…
Cancel
Save