advent24-llm / day22 /solution_gemini-1.5-pro.py
jerpint's picture
Add solution files
a4da721
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()