module Day3 where import Data.Char parse :: String -> [[Int]] parse input = map (map digitToInt) (lines input) maxJoltages :: [Int] -> [Int] maxJoltages bank = let update states k = zipWith max states (0 : [10*s + k | s <- states]) in foldl update (repeat 0) bank part1 :: String -> String part1 input = show $ sum $ map (\bank -> (maxJoltages bank) !! 2) $ parse input part2 :: String -> String part2 input = show $ sum $ map (\bank -> (maxJoltages bank) !! 12) $ parse input