6 changed files with 1568 additions and 0 deletions
@ -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 |
File diff suppressed because it is too large
Loading…
Reference in new issue