Skip to content

Instantly share code, notes, and snippets.

@object
Created December 7, 2024 06:02
Show Gist options
  • Save object/e0e84fbbada0ccee75a73a87d5d44e43 to your computer and use it in GitHub Desktop.
Save object/e0e84fbbada0ccee75a73a87d5d44e43 to your computer and use it in GitHub Desktop.
Advent of Code 2024, day 07
import sys
sys.setrecursionlimit(10**6)
with open("./data/input07.txt") as inputFile:
input = inputFile.read().splitlines()
equations = []
for line in input:
tokens = line.split(': ')
result = int(tokens[0])
nums = []
for num in tokens[1].split(' '):
nums.append(int(num))
equations.append((result, nums))
def rev(ar): return ar[::-1]
def get_result_permutations(nums, operators):
if len(nums) == 1:
return [nums[0]]
num = nums[0]
results = []
rest_results = get_result_permutations(nums[1::], operators)
for result in rest_results:
if '+' in operators: results.append(num + result)
if '*' in operators: results.append(num * result)
if '|' in operators: results.append(int(str(result) + str(num)))
return results
# Part 1:
res1 = 0
for eq in equations:
(result, nums) = eq
if result in get_result_permutations(rev(nums), ['+','*']):
res1 += result
print(res1)
# Part 2:
res2 = 0
for eq in equations:
(result, nums) = eq
if result in get_result_permutations(rev(nums), ['+','*','|']):
res2 += result
print(res2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment