Files
AdventOfCode/2024/07/07.py
2024-12-07 14:40:13 +01:00

65 lines
1.8 KiB
Python

def binerator(value,length):
out = "{0:b}".format(value)
while len(out) < length:
out = "0" + out
return out
def trinerator(value,length):
out = ""
while value > 0:
out = str(int(value)%3) + out
value = value//3
while len(out) < length:
out = "0" + out
return out
def firstTestResult(test):
out = 0
for i in range(0,pow(2,len(test[1])-1)):
bin = binerator(i,len(test[1])-1)
total = int(test[1][0])
for j in range(0,len(bin)):
match bin[j:j+1]:
case "0":
total += int(test[1][j+1])
case "1":
total *= int(test[1][j+1])
case _:
print("THIS IS AN ERROR")
if str(total) == test[0]:
return 1
return 0
def secondTestResult(test):
out = 0
for i in range(0,pow(3,len(test[1])-1)):
bin = trinerator(i,len(test[1])-1)
total = int(test[1][0])
for j in range(0,len(bin)):
match bin[j:j+1]:
case "0":
total += int(test[1][j+1])
case "1":
total *= int(test[1][j+1])
case "2":
total = int(str(total)+test[1][j+1])
case _:
print("THIS IS AN ERROR")
if str(total) == test[0]:
return 1
return 0
tests = []
with open("input07.txt") as file:
for line in file:
tests.append([line.split(":")[0],line.split(":")[1][1:-1].split(" ")])
out = 0
for test in tests:
if firstTestResult(test) >= 1:
out += int(test[0])
print("first challenge: "+str(out))
out = 0
for test in tests:
if secondTestResult(test) >= 1:
out += int(test[0])
print("second challenge: "+str(out))