summary refs log tree commit diff
path: root/10
diff options
context:
space:
mode:
authortzlil <tzlils@protonmail.com>2024-04-21 02:30:23 +0300
committertzlil <tzlils@protonmail.com>2024-04-21 02:30:23 +0300
commit32be67865623a20aec5f143e1571741cafa7d72c (patch)
treebb456e7e418d8417c6b2feda3dcd9f9f0c0c0dc6 /10
parent267a1e640b21840c26fd1506a3d6a76448cfb4f1 (diff)
get rid of summarize HEAD master
Diffstat (limited to '10')
-rw-r--r--10/Main.hs9
1 files changed, 3 insertions, 6 deletions
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