2024(6): attempt to troubleshoot slowness
It takes 10 - 20 minutes to solve it. It is too slow. It seems that List.count takes too long.
This commit is contained in:
@ -1,5 +1,8 @@
|
||||
from part1 import *
|
||||
|
||||
|
||||
verbose = False
|
||||
|
||||
thoughts = \
|
||||
"""
|
||||
So, we can place an obstacle on each of the 130*130 - #obstacles = 16900
|
||||
@ -18,15 +21,32 @@ if __name__ == "__main__":
|
||||
m = Map()
|
||||
#m.load_map("testinput")
|
||||
m.load_map("input")
|
||||
|
||||
# Prepare forked map for speed
|
||||
forked_map = m.copy()
|
||||
#forked_map = Map()
|
||||
#forked_map.load_map("input")
|
||||
begin_pos = m.pos
|
||||
begin_direction = m.direction
|
||||
|
||||
loop_obstacles = []
|
||||
i = 0
|
||||
|
||||
while m.step():
|
||||
print(i)
|
||||
if verbose:
|
||||
print(m.pos, m.direction)
|
||||
|
||||
# Create a copy
|
||||
forked_map = m.copy()
|
||||
forked_map.map[forked_map.next_pos()] = Map.Tiles.OBSTACLE.value
|
||||
#forked_map = m.copy()
|
||||
#forked_map = Map()
|
||||
#forked_map.load_map("input")
|
||||
#forked_map.map = m.map.copy()
|
||||
forked_map.map[m.next_pos()] = Map.Tiles.OBSTACLE.value
|
||||
forked_map.map[m.pos] = m.map[m.pos]
|
||||
forked_map.pos = begin_pos
|
||||
forked_map.direction = begin_direction
|
||||
forked_map.trace = [begin_pos]
|
||||
print(f"Forking at {forked_map.next_pos()}... ", end="")
|
||||
try:
|
||||
while forked_map.step():
|
||||
@ -36,6 +56,9 @@ if __name__ == "__main__":
|
||||
loop_obstacles.append(m.next_pos())
|
||||
else:
|
||||
print("no loop.")
|
||||
i += 1
|
||||
if i > 100:
|
||||
break
|
||||
#m.show()
|
||||
#print(len(m.trace), m.trace)
|
||||
#print(len(set(m.trace)))
|
||||
|
||||
Reference in New Issue
Block a user