2024(6): troubleshooting be whut
This commit is contained in:
@ -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:
|
||||
|
||||
@ -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)))
|
||||
|
||||
Reference in New Issue
Block a user