Day 22 Part 1
This commit is contained in:
1 parent
e478cf9030
commit
fcf7546442
6 files changed
+1568
No files matched your search
Whitespace-only changes.
Executable
+44
@@ -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}")
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
1
|
||||||
|
10
|
||||||
|
100
|
||||||
|
2024
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
123
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
2024
|
||||||
+1515
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user