Day 7 Part 2
This commit is contained in:
17
src/Day7.hs
17
src/Day7.hs
@@ -81,7 +81,6 @@ filterDirectories predicate dir = filter (\(_, size) -> predicate size) $ sizeOf
|
||||
sumUp :: [(String, Int)] -> Int
|
||||
sumUp = sum . map snd
|
||||
|
||||
|
||||
forceRight :: Either a b -> b
|
||||
forceRight (Left _) = error "forced Right but got Left"
|
||||
forceRight (Right b) = b
|
||||
@@ -92,6 +91,16 @@ day7 = do
|
||||
putStrLn "Day7"
|
||||
let parsed = forceRight $ parseTerminalLines input
|
||||
let tree = buildTree parsed
|
||||
let filtered = filterDirectories (<= 100000) tree
|
||||
let summed = sumUp filtered
|
||||
putStrLn ("Sum of those directories is " ++ show summed)
|
||||
let small = filterDirectories (<= 100000) tree
|
||||
let sumOfSmall = sumUp small
|
||||
putStrLn ("Sum of those directories is " ++ show sumOfSmall)
|
||||
let rootSize = snd . head $ sizeOfDirectories tree
|
||||
putStrLn ("Root size is " ++ show rootSize)
|
||||
let freeSpace = 70000000 - rootSize
|
||||
let requiredSpace = 30000000 - freeSpace
|
||||
putStrLn ("Required space is " ++ show requiredSpace)
|
||||
let bigEnough = filterDirectories (>= requiredSpace) tree
|
||||
let onlySizes = map snd bigEnough
|
||||
let smallest = minimum onlySizes
|
||||
putStrLn ("Smallest directory that is still large enough " ++ show smallest)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user