X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=app%2Fadvent16i.hs;fp=app%2Fadvent16i.hs;h=0000000000000000000000000000000000000000;hb=fd498a2713d69a5d55179ff07e58ce296d6fba94;hp=897559d5d810e7da1e8c721d3fafd2335ae6fbf3;hpb=3a26b187d5dc23b05fb73daabe52a92976a7a3c7;p=advent-of-code-16.git diff --git a/app/advent16i.hs b/app/advent16i.hs deleted file mode 100644 index 897559d..0000000 --- a/app/advent16i.hs +++ /dev/null @@ -1,45 +0,0 @@ -module Main(main) where - -input = "11100010111110100" -disk1length = 272 -disk2length = 35651584 - --- input = "10000" --- disk1length = 20 - -main :: IO () -main = do - part1 - part2 - -part1 :: IO () -part1 = print $ fill disk1length input - -part2 :: IO () -part2 = print $ fill disk2length input - -fill :: Int -> String -> String -fill len filler = deBool $ checksum $ take len $ expand len $ enBool filler - -enBool :: String -> [Bool] -enBool = map (== '1') - -deBool :: [Bool] -> String -deBool = map (\b -> if b then '1' else '0') - - -expand :: Int -> [Bool] -> [Bool] -expand len = head . dropWhile ((<= len) . length) . iterate expandStep - -expandStep :: [Bool] -> [Bool] -expandStep a = a ++ [False] ++ b - where b = map (not) $ reverse a - -checksum :: [Bool] -> [Bool] -checksum = head . dropWhile (even . length) . iterate checksumStep - -checksumStep :: [Bool] -> [Bool] -checksumStep [] = [] -checksumStep [x] = [x] -checksumStep (x:y:xs) = (x==y):(checksumStep xs) -