summary refs log tree commit diff
path: root/1/2.hs
blob: dd932d5daa45280383ab6e3ffa0aa8de19554a1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import Prelude
import Text.Read
import Data.Maybe
import Data.List
import Data.Monoid
import System.Environment

digits = ["one","two","three","four","five","six","seven","eight","nine"]

parse [] = (mempty,mempty)
parse l@(x:xs) = case findIndex (`isPrefixOf` l) digits of
  Just i -> f (Just $ i+1) <> parse xs
  Nothing -> f (readMaybe [x]) <> parse xs
  where
    f = (,) . First <*> Last

add (First x, Last y) = (+) . (*10) <$> x <*> y

main = head <$> getArgs >>= readFile >>= print . sum . catMaybes . map (add . parse) <$> lines