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()