Fix basic pathing

This commit is contained in:
2021-09-06 11:35:30 +01:00
parent 4d3c0ae38f
commit 72e29ebac3
9 changed files with 86 additions and 193 deletions
+11 -1
View File
@@ -1,14 +1,19 @@
{-# LANGUAGE RankNTypes #-}
module Dodge.Graph
( pairsToSCC
, incidenceToFunction
, pairsToIncidence
, graphToEdges
) where
-- this deserves tests
import Data.List.Extra
import Data.Bifunctor (first)
--import Data.Bifunctor (first)
import Data.Graph
import Data.Maybe
import qualified Data.Graph.Inductive.Graph as F
import qualified Data.Graph.Inductive.PatriciaTree as F
import Data.Bifunctor
pairsToIncidence :: Ord a => [(a,a)] -> [(a,[a])]
pairsToIncidence
@@ -24,3 +29,8 @@ mkNode (x,xs) = (x,x,xs)
pairsToSCC :: Ord a => [(a,a)] -> [SCC a]
pairsToSCC = stronglyConnComp . map mkNode . pairsToIncidence
graphToEdges :: forall a b . F.Gr a b -> [(a,a)]
graphToEdges g = map (bimap f f) $ F.edges g
where
f n = fromJust . lookup n $ F.labNodes g