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:
2024-12-26 16:37:28 +01:00
parent 9c65de6772
commit efe6e5a0c3

View File

@ -1,5 +1,8 @@
from part1 import * from part1 import *
verbose = False
thoughts = \ thoughts = \
""" """
So, we can place an obstacle on each of the 130*130 - #obstacles = 16900 So, we can place an obstacle on each of the 130*130 - #obstacles = 16900
@ -18,15 +21,32 @@ if __name__ == "__main__":
m = Map() m = Map()
#m.load_map("testinput") #m.load_map("testinput")
m.load_map("input") 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 = [] loop_obstacles = []
i = 0
while m.step(): while m.step():
print(i)
if verbose: if verbose:
print(m.pos, m.direction) print(m.pos, m.direction)
# Create a copy # Create a copy
forked_map = m.copy() #forked_map = m.copy()
forked_map.map[forked_map.next_pos()] = Map.Tiles.OBSTACLE.value #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="") print(f"Forking at {forked_map.next_pos()}... ", end="")
try: try:
while forked_map.step(): while forked_map.step():
@ -36,6 +56,9 @@ if __name__ == "__main__":
loop_obstacles.append(m.next_pos()) loop_obstacles.append(m.next_pos())
else: else:
print("no loop.") print("no loop.")
i += 1
if i > 100:
break
#m.show() #m.show()
#print(len(m.trace), m.trace) #print(len(m.trace), m.trace)
#print(len(set(m.trace))) #print(len(set(m.trace)))