From 05bd0464d9ded94c800cf9fa165e3dfed86667ed Mon Sep 17 00:00:00 2001 From: Christoph Stahl Date: Wed, 15 Dec 2021 17:44:58 +0100 Subject: [PATCH] Day 14: Part2 in progress --- d14golf.hs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/d14golf.hs b/d14golf.hs index 4d40961..6127716 100644 --- a/d14golf.hs +++ b/d14golf.hs @@ -1,9 +1,17 @@ -import Data.List +import qualified Data.Map as M l=readFile"d14small" i :: [(String, Char)] -> String -> String i r[x] = [x] i r(a:b:x)|Just c<-lookup [a,b] r=a:c:i r(b:x) +split(x:y:xs)=[x,y]:split(y:xs) +split _=[] -parse :: String -> ([String],[(String, Char)]) -parse = fmap (map((,).take 2<*>(!!6)).tail).break(==[]).lines -main=interact$show.length.(!!40).(\([x],r)->iterate(i r)x).parse \ No newline at end of file +apply :: M.Map String Int -> M.Map String (M.Map String Int) -> M.Map String Int +apply innermap conf = M.mapWithKey (undefined) innermap + +step conf init = M.map (id) conf + +makeTuple(a:b)c=(a:b,(M.fromList[([a,c],1),(c:b,1)],M.fromList[(c,1)])) +parse :: String -> ([String],M.Map String (M.Map String Int,M.Map Char Int)) +parse = (\([x],_:y)->(split x,(M.fromList.map((makeTuple).take 2<*>(!!6)))y)).break(==[]).lines +--main=interact$show.length.(!!40).(\([x],r)->iterate(i r)x).parse