X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=app%2Fadvent18.hs;fp=app%2Fadvent18.hs;h=0000000000000000000000000000000000000000;hb=fd498a2713d69a5d55179ff07e58ce296d6fba94;hp=2b1462f72ed069f80b743c38942c8c082e072c38;hpb=3a26b187d5dc23b05fb73daabe52a92976a7a3c7;p=advent-of-code-16.git diff --git a/app/advent18.hs b/app/advent18.hs deleted file mode 100644 index 2b1462f..0000000 --- a/app/advent18.hs +++ /dev/null @@ -1,42 +0,0 @@ -module Main(main) where - -import Data.List (tails) - --- input = "..^^." --- input = ".^^.^.^^^^" -input = "^.^^^.^..^....^^....^^^^.^^.^...^^.^.^^.^^.^^..^.^...^.^..^.^^.^..^.....^^^.^.^^^..^^...^^^...^...^." - -main :: IO () -main = do - part1 - part2 - -part1 :: IO () --- part1 = putStrLn $ unlines $ map (showRow) $ take 10 $ iterate nextRow $ readRow input -part1 = print $ length $ filter (not) $ concat $ take 40 $ iterate nextRow $ readRow input - -part2 :: IO () -part2 = print $ length $ filter (not) $ concat $ take 400000 $ iterate nextRow $ readRow input - -readRow :: String -> [Bool] -readRow = map (=='^') - -showRow :: [Bool] -> String -showRow = map (\c -> if c then '^' else '.') - -extended :: [Bool] -> [Bool] -extended row = [False] ++ row ++ [False] - -nextRow :: [Bool] -> [Bool] -nextRow = map (isTrap) . segments . extended - -segments :: [a] -> [[a]] -segments = filter ((==3) . length) . map (take 3) . tails - -isTrap :: [Bool] -> Bool -isTrap segment - | segment == [True, True, False] = True - | segment == [False, True, True] = True - | segment == [True, False, False] = True - | segment == [False, False, True] = True - | otherwise = False