2024(6): troubleshooting be whut

This commit is contained in:
2024-12-27 12:29:24 +01:00
parent efe6e5a0c3
commit e28df05c1e
2 changed files with 14 additions and 8 deletions

View File

@ -3,7 +3,7 @@ from enum import Enum
import copy
verbose = False
verbose = True
class Map:
"""
@ -102,6 +102,7 @@ class Map:
self.trace.append(self.pos)
self.direction = self.map[self.pos]
self.map[self.pos] = self.Tiles.FREE.value
self.pos_counter = np.zeros(self.map.shape)
class LoopException(Exception):
"""
@ -128,6 +129,7 @@ class Map:
# TODO: Really take a step! Do not only turn.
self.pos = self.next_pos()
self.trace.append(self.pos)
self.pos_counter[self.pos] += 1
return True
elif next_tile == self.Tiles.OBSTACLE:
self.direction = self.next_direction(self.direction)
@ -158,7 +160,7 @@ class Map:
least twice from at least one direction.
"""
return self.trace.count(self.pos) > 4
return self.pos_counter[self.pos] > 4
def copy(self):
if verbose:

View File

@ -19,13 +19,14 @@ position; see Pigeonhole principle).
if __name__ == "__main__":
m = Map()
#m.load_map("testinput")
m.load_map("input")
m.load_map("testinput")
#m.load_map("input")
# Prepare forked map for speed
forked_map = m.copy()
#forked_map = Map()
#forked_map = m.copy()
forked_map = Map()
#forked_map.load_map("input")
forked_map.load_map("testinput")
begin_pos = m.pos
begin_direction = m.direction
@ -42,11 +43,14 @@ if __name__ == "__main__":
#forked_map = Map()
#forked_map.load_map("input")
#forked_map.map = m.map.copy()
print(f"Forking map, setting obstacle at {m.next_pos()}, resetting current {m.pos} to {m.map[m.pos]}")
forked_map.show()
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]
forked_map.show()
print(f"Forking at {forked_map.next_pos()}... ", end="")
try:
while forked_map.step():
@ -57,8 +61,8 @@ if __name__ == "__main__":
else:
print("no loop.")
i += 1
if i > 100:
break
#if i > 100:
# break
#m.show()
#print(len(m.trace), m.trace)
#print(len(set(m.trace)))