From 262f2aae909308a710b024da547ea0f8bdd873d1 Mon Sep 17 00:00:00 2001 From: Bill Ewanick Date: Wed, 15 Nov 2023 17:32:10 -0500 Subject: [PATCH] Fix infinite loop Co-authored-by: David Schlachter --- src/l33tcode/841.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/l33tcode/841.go b/src/l33tcode/841.go index eebf41d..4c70e87 100644 --- a/src/l33tcode/841.go +++ b/src/l33tcode/841.go @@ -3,7 +3,7 @@ package main import "fmt" func main() { - res := canVisitAllRooms([][]int{{1}, {2}, {}}) + res := canVisitAllRooms([][]int{{1, 3}, {3, 0, 1}, {2}, {0}}) fmt.Printf("%+v\n", res) } @@ -27,11 +27,13 @@ func getAllKeys(index int, seen map[int]struct{}, rooms [][]int) map[int]struct{ keys := map[int]struct{}{} for j := 0; j < len(rooms[index]); j++ { - if _, ok := keys[rooms[index][j]]; ok { + if _, ok := seen[rooms[index][j]]; ok { continue + } else { + seen[rooms[index][j]] = struct{}{} } keys[rooms[index][j]] = struct{}{} - insideKeys := getAllKeys(j, keys, rooms) + insideKeys := getAllKeys(rooms[index][j], seen, rooms) for k := range insideKeys { keys[k] = struct{}{} }