AdventOfCode2024/Day1/puzzle2.hs
2024-12-01 11:45:34 +01:00

14 lines
496 B
Haskell

import Data.List (transpose, sort, group)
import System.IO
similarityScore :: [Int] -> [Int] -> Int
similarityScore xs ys = let elemsY = [ (head y, length y) | y <- (group . sort) ys ]
xy = [ (x, snd y) | x <- xs, y <- elemsY, x == fst y ]
in sum [ uncurry (*) x | x <- xy ]
main = do
contents <- lines <$> readFile "day1.txt"
let [x, y] = transpose $ map read . words <$> contents
score = similarityScore x y
print score