From 32be67865623a20aec5f143e1571741cafa7d72c Mon Sep 17 00:00:00 2001 From: tzlil Date: Sun, 21 Apr 2024 02:30:23 +0300 Subject: get rid of summarize --- 10/Main.hs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to '10') diff --git a/10/Main.hs b/10/Main.hs index 27b4c8d..42644ed 100644 --- a/10/Main.hs +++ b/10/Main.hs @@ -4,7 +4,7 @@ import Data.List import Data.Bifunctor (first, second, bimap) import Data.Foldable (fold) import Data.Monoid -import Data.Tree (drawForest, Tree(Node)) +import Data.Tree (drawForest, Tree(Node), flatten) import Algebra.Graph.ToGraph (dfsForestFrom, preSet) import Data.Set (toList) import Debug.Trace @@ -23,15 +23,12 @@ maze tiles = fold [f tile (x,y) | (y, row) <- enumerate tiles, (x, tile) <- enum f 'S' = (Empty,) . First . Just mainloop :: [String] -> [(Int, Int)] -mainloop tiles = circuit where +mainloop tiles = flatten g'' where (g, First (Just s)) = maze tiles -- connect start to the appropriate tiles g' = overlay (connect (vertex s) $ vertices . toList $ preSet s g) g + -- there should be only one of these, so `flatten` gives us the circuit [g''] = dfsForestFrom g' [s] - -- find all paths from root (there should be only one) - summarize (Node l []) = [[l]] - summarize (Node l ts) = [l:summary | t <- ts, summary <- summarize t] - [circuit] = summarize g'' part1 tiles = (length (mainloop tiles) - 1) `div` 2 + 1 -- cgit 1.4.1