Spaces:
Running
Running
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() |