|
|
@@ -9,7 +9,7 @@ import Data.List (sort, nub) |
|
|
|
main :: IO () |
|
|
|
main = do |
|
|
|
raw <- readFile "day4.txt" |
|
|
|
let ls = parse $ lines raw |
|
|
|
let ls = map (concat . (map words)) $ split "" $ lines raw |
|
|
|
ansA = length $ filter (== True) $ map solveA ls |
|
|
|
ansB = length $ filter (== True) $ map solveB ls |
|
|
|
in do |
|
|
@@ -96,12 +96,9 @@ hgtValid s' = |
|
|
|
s = drop 1 $ dropWhile (/= ':') s' |
|
|
|
(val,unit) = head $ (reads s :: [(Int,String)]) |
|
|
|
|
|
|
|
parse :: [String] -> [[String]] |
|
|
|
parse [] = [] |
|
|
|
parse s = parse' s [] [] |
|
|
|
|
|
|
|
parse' :: [String] -> [String] -> [[String]] -> [[String]] |
|
|
|
parse' [] as bs = bs ++ [as] |
|
|
|
parse' (s:ss) as bs |
|
|
|
| s == "" = parse' ss [] $ bs ++ [as] |
|
|
|
| otherwise = parse' ss (as ++ (words s)) bs |
|
|
|
split :: Eq a => a -> [a] -> [[a]] |
|
|
|
split _ [] = [] |
|
|
|
split d as = chunk : (split d rest) |
|
|
|
where |
|
|
|
chunk = takeWhile (/= d) as |
|
|
|
rest = drop 1 $ dropWhile (/= d) as |