X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=advent04.hs;h=b8c095ed4ca033040652a89564093a72a69e4c09;hb=b8d1abb7cae751efd0fbbb1a2f5e416132ad66d2;hp=fb2839ece8accc5aadc20d24d091f5ce39bb9e18;hpb=561b9b116c18c2d433f610cad14bfdc54d4e75be;p=advent-of-code-16.git diff --git a/advent04.hs b/advent04.hs index fb2839e..b8c095e 100644 --- a/advent04.hs +++ b/advent04.hs @@ -1,4 +1,6 @@ -import Data.List (last, intersperse, sortBy, intercalate, isInfixOf) +module Main(main) where + +import Data.List (last, intersperse, sortBy, intercalate, isInfixOf, init) import Data.List.Split (splitOn) import Data.Char (isLetter, ord, chr) import qualified Data.Map.Lazy as Map @@ -36,13 +38,14 @@ part2 rooms = do parseLine :: String -> Room parseLine line = Room {name=name, sector=sector, checksum=checksum} where components = splitOn "-" line - name = intercalate "-" $ reverse $ tail $ reverse components + name = intercalate "-" $ init components sector = read $ head $ splitOn "[" $ last components checksum = filter (isLetter) $ last components countedLetters :: String -> [(Char, Int)] countedLetters name = sortBy sortCLetter $ unsortedCountedLetters name - where unsortedCountedLetters name = Map.toList $ Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name] + where unsortedCountedLetters name = + Map.toList $ Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name] sortCLetter :: (Char, Int) -> (Char, Int) -> Ordering sortCLetter (l1, n1) (l2, n2)