Spaces:
Running
Running
File size: 1,833 Bytes
a4da721 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
file = "./input.txt"
def next_secret(secret):
secret = (secret * 64) ^ secret
secret = secret % 16777216
secret = (secret // 32) ^ secret
secret = secret % 16777216
secret = (secret * 2048) ^ secret
secret = secret % 16777216
return secret
def solve1():
with open(file, 'r') as f:
secrets = [int(line.strip()) for line in f]
total_sum = 0
for secret in secrets:
for _ in range(2000):
secret = next_secret(secret)
total_sum += secret
print(total_sum)
def get_prices(initial_secret):
prices = []
secret = initial_secret
prices.append(secret % 10)
for _ in range(2000):
secret = next_secret(secret)
prices.append(secret % 10)
return prices
def get_changes(prices):
changes = []
for i in range(1, len(prices)):
changes.append(prices[i] - prices[i-1])
return changes
def solve2():
with open(file, 'r') as f:
secrets = [int(line.strip()) for line in f]
max_bananas = 0
for c1 in range(-9, 10):
for c2 in range(-9, 10):
for c3 in range(-9, 10):
for c4 in range(-9, 10):
sequence = [c1, c2, c3, c4]
total_bananas = 0
for secret in secrets:
prices = get_prices(secret)
changes = get_changes(prices)
sold = False
for i in range(len(changes) - 3):
if changes[i:i+4] == sequence:
total_bananas += prices[i+4]
sold = True
break
max_bananas = max(max_bananas, total_bananas)
print(max_bananas)
solve1()
solve2() |