Advertisement
Guest User

Untitled

a guest
Dec 7th, 2024
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.26 KB | None | 0 0
  1. from aocd import get_data
  2. from collections import defaultdict, deque
  3. import re
  4. def GetData():
  5.     data = get_data(day=7, year=2024)
  6.     return data
  7.  
  8. data = GetData()
  9.  
  10. # data = """190: 10 19
  11. # 3267: 81 40 27
  12. # 83: 17 5
  13. # 156: 15 6
  14. # 7290: 6 8 6 15
  15. # 161011: 16 10 13
  16. # 192: 17 8 14
  17. # 21037: 9 7 18 13
  18. # 292: 11 6 16 20"""
  19.  
  20. data = data.split("\n")
  21.  
  22. def recurse(arr,val,target):
  23.     if len(arr) == 0:
  24.         if val == target:
  25.             return True
  26.         return False
  27.     cur = arr.popleft()
  28.     for i in range(3):
  29.         if i == 0:
  30.             v1 = recurse(arr,val+cur, target)
  31.         elif i ==1:
  32.             v2 = recurse(arr,val*cur, target)
  33.         else:
  34.             newVal = str(val)+str(cur)
  35.             v3 = recurse(arr,int(newVal),target)
  36.     arr.appendleft(cur)
  37.     if v1 or v2 or v3:
  38.         return True
  39.     return False
  40.    
  41. def transform(arr):
  42.     tmp = []
  43.     for i in arr:
  44.         if i == " " or i == "":
  45.             continue
  46.         tmp.append(int(i))
  47.     return deque(tmp)
  48. res = 0
  49.  
  50. for row in data:
  51.     r = row.split(":")
  52.     target = int(r[0])
  53.     arr = r[1].split(" ")
  54.     arr = transform(arr)
  55.     start = arr.popleft()
  56.     flag = recurse(arr,start,target)
  57.     if flag:
  58.         res += target
  59. print(res)
  60.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement