blob: f191196e6f7ea3326db13cedd7236baadb2f2ed7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
|