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
|