Day6:part1 works
This commit is contained in:
parent
47429d0edd
commit
3f8e871707
|
@ -0,0 +1,32 @@
|
||||||
|
import Data.Foldable as Fold
|
||||||
|
import Data.Maybe as Maybe
|
||||||
|
import Data.List.Split
|
||||||
|
import Data.List as List
|
||||||
|
|
||||||
|
main = do
|
||||||
|
content <- getContents
|
||||||
|
let ops = map parse $ lines content
|
||||||
|
let result = toTree [("COM",0)] ops
|
||||||
|
mapM putStrLn (map show result)
|
||||||
|
putStrLn $ show $ sum (map (\x-> snd x) result)
|
||||||
|
putStrLn("Hello World")
|
||||||
|
|
||||||
|
toMap :: [(String,Int)] -> (String,String) -> [(String,Int)]
|
||||||
|
toMap state (p1,p2) = state ++ [(p2, (snd value) + 1)]
|
||||||
|
where value = (fromMaybe (p1,-1) ((Fold.find (\x -> fst x == p1) state)))
|
||||||
|
|
||||||
|
toTree :: [(String,Int)] -> [(String,String)] -> [(String,Int)]
|
||||||
|
toTree dist ops = do
|
||||||
|
let visits = map fst dist
|
||||||
|
let newop = (Fold.find (\x-> (elem (fst x) visits) && (notElem (snd x) visits)) ops)
|
||||||
|
if Maybe.isNothing newop
|
||||||
|
then dist
|
||||||
|
else do
|
||||||
|
let newdist = toMap dist (Maybe.fromJust newop)
|
||||||
|
let newops = List.delete (Maybe.fromJust newop) ops
|
||||||
|
toTree newdist newops
|
||||||
|
|
||||||
|
parse :: String -> (String, String)
|
||||||
|
parse input = do
|
||||||
|
let split = splitOn ")" input
|
||||||
|
(split !! 0, split !! 1)
|
Loading…
Reference in New Issue
Block a user