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