diff options
Diffstat (limited to '80-89/81.hs')
-rw-r--r-- | 80-89/81.hs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/80-89/81.hs b/80-89/81.hs new file mode 100644 index 0000000..9bf42d8 --- /dev/null +++ b/80-89/81.hs @@ -0,0 +1,12 @@ +import Data.List (partition) + +paths :: Eq a => a -> a -> [(a, a)] -> [[a]] + +paths s t edges = map reverse $ paths' s edges [s] + where + paths' u edges path + | u == t = [path] + | otherwise = + do let (vs, edges') = partition ((== u) . fst) edges + (_, v) <- vs + paths' v edges' (v:path) |