Advertisement
Guest User

Untitled

a guest
Dec 16th, 2023
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. f = open("input.txt","r")
  2. lines = f.read().splitlines()
  3. f.close()
  4.  
  5. map = {}
  6. ycoord = 0
  7. for y in lines:
  8. arr = list(y)
  9. xcoord = 0
  10. for x in arr:
  11. map[(xcoord,ycoord)] = x
  12. xcoord += 1
  13. ycoord += 1
  14.  
  15. energized = map.copy()
  16.  
  17. stack = [((0,0),(1,0))]
  18. count = 0
  19.  
  20. while count != 100000:
  21. count += 1
  22. val = ()
  23. try:
  24. val = stack.pop()
  25. except:
  26. break
  27. curr = val[0]
  28. dir = val[1]
  29. exit = True
  30. for x in curr:
  31. if x < 0 or x > 109:
  32. exit = False
  33. if exit:
  34. energized[curr] = "#"
  35. if map[curr] == '.':
  36. curr = (curr[0] + dir[0], curr[1] + dir[1])
  37. stack.append((curr,dir))
  38. elif map[curr] == '|':
  39. if dir[1] != 1:
  40. dir1 = (0,-1)
  41. curr1 = (curr[0] + dir1[0], curr[1] + dir1[1])
  42. stack.append((curr1,dir1))
  43. if dir[1] != -1:
  44. dir2 = (0,1)
  45. curr2 = (curr[0] + dir2[0], curr[1] + dir2[1])
  46. stack.append((curr2,dir2))
  47. map[curr] = '#'
  48. elif map[curr] == '-':
  49. if dir[0] != 1:
  50. dir1 = (-1,0)
  51. curr1 = (curr[0] + dir1[0], curr[1] + dir1[1])
  52. stack.append((curr1,dir1))
  53. if dir[0] != -1:
  54. dir2 = (1,0)
  55. curr2 = (curr[0] + dir2[0], curr[1] + dir2[1])
  56. stack.append((curr2,dir2))
  57. map[curr] = '#'
  58. elif map[curr] == '/':
  59. if dir == (1,0):
  60. dir = (0,-1)
  61. curr = (curr[0] + dir[0], curr[1] + dir[1])
  62. stack.append((curr,dir))
  63. elif dir == (-1,0):
  64. dir = (0,1)
  65. curr = (curr[0] + dir[0], curr[1] + dir[1])
  66. stack.append((curr,dir))
  67. elif dir == (0,1):
  68. dir = (-1,0)
  69. curr = (curr[0] + dir[0], curr[1] + dir[1])
  70. stack.append((curr,dir))
  71. else:
  72. dir = (1,0)
  73. curr = (curr[0] + dir[0], curr[1] + dir[1])
  74. stack.append((curr,dir))
  75. elif map[curr] == '\\':
  76. if dir == (1,0):
  77. dir = (0,1)
  78. curr = (curr[0] + dir[0], curr[1] + dir[1])
  79. stack.append((curr,dir))
  80. elif dir == (-1,0):
  81. dir = (0,-1)
  82. curr = (curr[0] + dir[0], curr[1] + dir[1])
  83. stack.append((curr,dir))
  84. elif dir == (0,1):
  85. dir = (1,0)
  86. curr = (curr[0] + dir[0], curr[1] + dir[1])
  87. stack.append((curr,dir))
  88. else:
  89. dir = (-1,0)
  90. curr = (curr[0] + dir[0], curr[1] + dir[1])
  91. stack.append((curr,dir))
  92.  
  93. vals = list(energized.values())
  94. total = 0
  95. for x in vals:
  96. if x == '#':
  97. total += 1
  98. print(total)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement