Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Data.List;
- import Data.Maybe;
- import Text.Printf;
- parenToOffset :: Char -> Int
- parenToOffset '(' = 1
- parenToOffset ')' = -1
- parenToOffset _ = 0
- toCurrentLevel :: [Int] -> [Int]
- toCurrentLevel = reverse . go [0]
- where
- go :: [Int] -> [Int] -> [Int]
- go acc [] = acc
- go [] xs = go [0] xs
- go (a:acc) (x:xs) = go (a + x : acc) xs
- levelsAtIndex :: String -> [Int]
- levelsAtIndex = toCurrentLevel . fmap parenToOffset
- main :: IO ()
- main = do
- contents <- getContents
- let levels = levelsAtIndex contents
- printf "Task 1: %d\n" $ last levels
- printf "Task 2: %d\n" $ fromMaybe (-1) $ elemIndex (-1) levels
Advertisement
Add Comment
Please, Sign In to add comment