Day 6
[advent-of-code-16.git] / advent04.hs
index 5ad205e9add09859cb00fc9d9c6fc5514349d4d5..135ad379ee7ba1b3fa0bfb8c15e0370afb59a4d1 100644 (file)
@@ -1,8 +1,9 @@
+module Main(main) where
+
 import Data.List (last, intersperse, sortBy, intercalate, isInfixOf)
 import Data.List.Split (splitOn)
 import Data.Char (isLetter, ord, chr)
 import qualified Data.Map.Lazy as Map
-import Data.Tuple (swap)
 
 data Room = Room { name :: String
                  , sector :: Int
@@ -26,7 +27,7 @@ part1 rooms = do
 
 part2 :: [Room] -> IO ()
 part2 rooms = do 
-    print $ filter (\sn -> isInfixOf "north" (snd sn)) sectorNames
+    print $ fst $ head $ filter (\sn -> isInfixOf "north" (snd sn)) sectorNames
     where 
         validChecksum room = (checksum room) == makeChecksum (name room)
         validRooms = filter (validChecksum) rooms
@@ -37,14 +38,14 @@ part2 rooms = do
 parseLine :: String -> Room
 parseLine line = Room {name=name, sector=sector, checksum=checksum}
     where components = splitOn "-" line
-          -- name = concat $ intersperse "-" $ reverse $ tail $ reverse components
           name = intercalate "-" $ reverse $ tail $ reverse 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)