From 3203126dade8ee3b99596fe42015363dfe736e2f Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Sun, 12 Dec 2021 10:07:23 +0100 Subject: [PATCH] day(12): follow DRY Signed-off-by: Matej Focko --- src/year2021/day12/Day12.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/year2021/day12/Day12.kt b/src/year2021/day12/Day12.kt index 9e395a5..4362477 100644 --- a/src/year2021/day12/Day12.kt +++ b/src/year2021/day12/Day12.kt @@ -15,12 +15,10 @@ fun findAllPaths( val neighbours = graph .getOrDefault(path.last(), emptySet()) .filter { it == it.uppercase() || (!twiceVisited && it != "start") || !visited.contains(it) } + .map { it to ((it == it.lowercase() && visited.contains(it)) || twiceVisited) } - return neighbours.map { neighbour -> - if (neighbour == neighbour.lowercase() && visited.contains(neighbour)) - findAllPaths(graph, path + neighbour, visited, true) - else - findAllPaths(graph, path + neighbour, visited + neighbour, twiceVisited) + return neighbours.map { (neighbour, newTwiceVisited) -> + findAllPaths(graph, path + neighbour, visited + neighbour, newTwiceVisited) }.fold(emptySet()) { acc, it -> acc + it } }