From 66c22faa1fd89b201154034ae7f5e618f00a8239 Mon Sep 17 00:00:00 2001 From: Laura Orvokki Kursula Date: Sat, 7 Dec 2024 13:10:58 +0100 Subject: 7-2 --- 7-2.hs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 7-2.hs diff --git a/7-2.hs b/7-2.hs new file mode 100644 index 0000000..f191196 --- /dev/null +++ b/7-2.hs @@ -0,0 +1,25 @@ +cat :: Int -> Int -> Int +cat x y = x * 10^(floor (logBase 10 (fromIntegral y)) + 1) + y + +combine :: [Int] -> [Int] +combine (x:xs) = foldl f [x] xs + where + f :: [Int] -> Int -> [Int] + f ns n = [(+), (*), cat] <*> ns <*> [n] + +check :: Int -> [Int] -> Bool +check x xs = elem x (combine xs) + +parseLine :: String -> (Int,[Int]) +parseLine s = (read $ init x, map read xs) + where + (x:xs) = words s + +result :: [(Int,[Int])] -> Int +result xs = sum . map fst . filter snd + $ zip (map fst xs) (map (uncurry check) xs) + +main :: IO () +main = do + ls <- lines <$> getContents + print . result . map parseLine $ ls -- cgit v1.2.3