From 88def4674b8e2cb48eb5661cf32b078f0036b6d1 Mon Sep 17 00:00:00 2001 From: Dmitry Fedotov Date: Sat, 22 Mar 2025 18:38:32 +0300 Subject: [PATCH] addition --- .gitignore | 1 + day10/day10.py | 30 ++++++++++++++++++-------- lib/__pycache__/tools.cpython-310.pyc | Bin 701 -> 0 bytes 3 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 .gitignore delete mode 100644 lib/__pycache__/tools.cpython-310.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d0933d8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +lib/__pycache__ diff --git a/day10/day10.py b/day10/day10.py index 984d129..a64b014 100644 --- a/day10/day10.py +++ b/day10/day10.py @@ -50,7 +50,7 @@ class Tile(object): self.links = [S, E] def __str__(self): - return f'{self.val} x: {self.x} y: {self.y}' + return f'{self.val}' # x: {self.x} y: {self.y}' def __eq__(self, obj) -> bool: return self.x == obj.x and self.y == obj.y @@ -126,10 +126,12 @@ class Walker(Field): while True: self.loop.append(curr) nxt = self.get_adjacent(curr, dir) - if not nxt or not nxt.has_link_from(dir.opposite()): + if not nxt: break if nxt.val == START: return + if not nxt.has_link_from(dir.opposite()): + break curr = nxt dir = nxt.opposite_pipe_end(dir.opposite()) @@ -147,17 +149,27 @@ class Walker(Field): inside_loop = set() for t in self.loop: for d in [N, E, S, W]: - newt = self.get_adjacent(t, d) + newt = self.get_adjacent(t, d) if not newt or newt in self.visited: continue - if self._is_inside_loop(newt): + if self._is_inside_loop(newt, [N, E, S, W]): inside_loop.add(newt) self.visited.add(newt) return len(inside_loop) - def _is_inside_loop(self, t: Tile) -> bool: - # TODO + def _is_inside_loop(self, t: Tile, dirs: list[Direction]) -> bool: + if not t: + return False + + if t in self.loop: + return True + + for d in dirs: + newt = self.get_adjacent(t, d) + if not self._is_inside_loop(newt, [d]): + return False + return True @@ -167,8 +179,7 @@ if __name__ == '__main__': lines = r.read() w = Walker(lines) - steps = w.find_max_steps_in_loop() - print(steps) + print(w) n = w.find_captured_by_loop() print(n) @@ -178,5 +189,6 @@ if __name__ == '__main__': w = Walker(lines) steps = w.find_max_steps_in_loop() print(steps) - # print(w.loop) + n = w.find_captured_by_loop() + print(n) diff --git a/lib/__pycache__/tools.cpython-310.pyc b/lib/__pycache__/tools.cpython-310.pyc deleted file mode 100644 index 31e8706452425b8a280ba494ecbb379c97d91208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmY*W&2AGh5T3D}Xd4n*p-OP*i38FelBMN_5UK;3pfqq{uiW_J<@sfB}Pd#1__a zf<~M}EHm=_M}n+VVt+)!0>!~Z7>d4wi8RtEx|QirZZ~w#Y-+5_IOl;_XMRWQdAu5H z(A1kUa2#WZrg>rK>CDC=C~u3Y@SC!wOx+&&9N vWk+yJ$EY!)p2H%DurHgpG5un