module Main (main) where import Data.List (sort, transpose) import Text.Printf (printf) -- readFile "./inputs/day1" >>= \inputs -> let columns = map sort $ map (map (read :: String -> Int)) $ transpose $ map words $ lines inputs in printf "total distance: %d\n" (sum $ map abs $ zipWith (-) (columns !! 0) (columns !! 1)) >> printf "similarity score: %d\n" (sum $ map (\x -> x * (length $ filter (\y -> x == y) (columns !! 1))) (columns !! 0)) main :: IO () main = do inputs <- readFile "./inputs/day1" let columns = map sort $ map (map (read :: String -> Int)) $ transpose $ map words $ lines inputs printf "total distance: %d\n" (sum $ map abs $ zipWith (-) (columns !! 0) (columns !! 1)) printf "similarity score: %d\n" (sum $ map (\x -> x * (length $ filter (\y -> x == y) (columns !! 1))) (columns !! 0))