Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from aocd import get_data
- from collections import defaultdict, deque
- import re
- def GetData():
- data = get_data(day=7, year=2024)
- return data
- data = GetData()
- # data = """190: 10 19
- # 3267: 81 40 27
- # 83: 17 5
- # 156: 15 6
- # 7290: 6 8 6 15
- # 161011: 16 10 13
- # 192: 17 8 14
- # 21037: 9 7 18 13
- # 292: 11 6 16 20"""
- data = data.split("\n")
- def recurse(arr,val,target):
- if len(arr) == 0:
- if val == target:
- return True
- return False
- cur = arr.popleft()
- for i in range(3):
- if i == 0:
- v1 = recurse(arr,val+cur, target)
- elif i ==1:
- v2 = recurse(arr,val*cur, target)
- else:
- newVal = str(val)+str(cur)
- v3 = recurse(arr,int(newVal),target)
- arr.appendleft(cur)
- if v1 or v2 or v3:
- return True
- return False
- def transform(arr):
- tmp = []
- for i in arr:
- if i == " " or i == "":
- continue
- tmp.append(int(i))
- return deque(tmp)
- res = 0
- for row in data:
- r = row.split(":")
- target = int(r[0])
- arr = r[1].split(" ")
- arr = transform(arr)
- start = arr.popleft()
- flag = recurse(arr,start,target)
- if flag:
- res += target
- print(res)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement