From e111bbc48d18c86832e10315e037ec214f087df2 Mon Sep 17 00:00:00 2001 From: shu Date: Sat, 14 Dec 2019 13:12:29 +0100 Subject: [PATCH] Day 14: Interesting but wrong solution --- 2019/day14/day14.hs | 26 +++++++++++++++++++++ 2019/day14/input | 55 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 2019/day14/day14.hs create mode 100644 2019/day14/input diff --git a/2019/day14/day14.hs b/2019/day14/day14.hs new file mode 100644 index 0000000..dbb78db --- /dev/null +++ b/2019/day14/day14.hs @@ -0,0 +1,26 @@ +import Data.List.Split +import qualified Data.Map as M +import Data.Ratio + +main :: IO () +main = do + content <- parseContent <$> readFile "testinput1" + print content + +parseContent :: String -> M.Map String [(String, Ratio Int)] +parseContent = M.fromList . map (parseRecipe . splitOn " => ") . lines + +parseRecipe :: [String] -> (String, [(String,Ratio Int)]) +parseRecipe r = (result,ingredients) + where parseIngredients = map (splitOn " ") . splitOn ", " + left = parseIngredients $ head r + right = concat $ parseIngredients $ last r + result = last right + resultDenom = read $ head right :: Int + processIngredient n ing = (last ing,read (head ing) % n) + ingredients = map (processIngredient resultDenom) left + + +part1 :: M.Map String [(String, Ratio Int)] -> (String,Ratio Int) -> Ratio Int +part1 _ ("ORE",x) = x +part1 m (key,x) = x * sum (map (part1 m) (m M.! key)) diff --git a/2019/day14/input b/2019/day14/input new file mode 100644 index 0000000..2127948 --- /dev/null +++ b/2019/day14/input @@ -0,0 +1,55 @@ +13 RXWQR => 4 JXCXB +7 FDGDX => 7 XRWJ +3 JBVN, 25 JFRXJ => 3 TPDSB +13 HZDWS, 11 RZNJR => 3 SVFT +5 FDGDX, 4 RZNJR, 41 ZGXGP => 8 LBVM +1 LJDRB => 9 RXWQR +2 RDPWQ => 8 JBVN +2 CZCB => 8 CXHK +4 JXCXB, 1 FPQRV => 5 TCBSQ +6 FDGDX => 8 TWGNB +1 RJBTL => 5 VRVDQ +2 XRWJ, 3 HZDWS, 12 LBVM => 6 KSJD +15 HPXST, 1 KMKR, 7 SLTX, 1 PRWD, 14 RCLB, 31 TPDSB, 3 GWXJP, 3 TPQZ => 8 XRLZR +1 RBLT, 2 RTFKN, 1 CZCB => 8 DNRP +131 ORE => 8 TFGJ +2 JFRXJ, 1 VRVDQ, 26 TWGNB => 5 CFPZ +2 SMPW, 1 TWGNB => 8 RZNJR +20 HRZP => 6 RDPWQ +1 RCLB, 4 GJNK, 4 QGJL => 4 HZDWS +7 CXHK, 2 XTMRV, 6 WSNPZ, 12 LQXCP, 19 PMWJ, 17 GJNK, 26 XRLZR, 36 LWFQ => 1 FUEL +131 ORE => 8 KMKR +1 LJDRB, 12 TFGJ, 10 RXWQR => 7 RPKZ +10 RVXT, 1 RDPWQ => 8 JFRXJ +1 QXBTX => 9 TPQZ +1 ZGXGP => 5 FZGF +1 RTFKN, 1 DNRP => 2 FDGDX +19 CZCB, 1 RBLT => 4 SMPW +2 DNRP, 1 SMPW => 9 RWSH +1 ZGXGP, 5 TCBSQ, 22 SMPW => 5 GWXJP +1 HBSKF => 3 LQXCP +1 ZGXGP, 2 KSJD, 9 CFPZ => 7 CLGXQ +186 ORE => 8 LJDRB +1 TPQZ, 2 HBSKF => 1 QGJL +8 FZGF, 6 FDGDX => 3 PMWJ +9 KMKR => 1 CZCB +21 TFGJ, 3 RVXT => 5 HRZP +39 FDGDX, 24 TPDSB => 2 RCLB +4 HRZP => 2 GJNK +6 RZNJR => 2 HBSKF +101 ORE => 8 RVXT +1 RCLB => 8 QXBTX +1 RJBTL => 7 RBLT +2 CFPZ, 2 JXCXB, 4 TPQZ => 1 LWFQ +1 QGJL, 24 GJNK, 6 TWGNB, 1 SLTX, 18 JFRXJ, 6 MSNM, 6 FDGDX, 2 JXCXB => 5 WSNPZ +4 RZNJR => 6 FPQRV +12 LJDRB, 10 JFRXJ, 1 ZGXGP => 5 TXZVH +13 KSJD, 11 FXGW => 9 PRWD +11 SVFT, 2 HZDWS, 1 CLGXQ, 1 LQXCP, 6 JXCXB, 11 PRWD => 5 XTMRV +27 TWGNB, 7 FPQRV => 2 SLTX +2 HRZP, 6 RXWQR => 9 RJBTL +2 CXHK, 1 RPKZ => 1 RTFKN +7 RWSH, 12 JBVN, 6 FXGW => 2 ZGXGP +1 TXZVH, 4 FPQRV => 8 MSNM +16 TPDSB, 1 FXGW => 5 HPXST +1 VRVDQ => 2 FXGW