diff --git a/2019/1/day1.hs b/2019/1/day1.hs index bed4a54..e9d6a77 100644 --- a/2019/1/day1.hs +++ b/2019/1/day1.hs @@ -5,13 +5,16 @@ main :: IO () main = do content <- getContents let input = map read (lines content) - printf "Part 1: %d\n" (fuel input) - printf "Part 2: %d\n" (fuelrec input) + printf "Part 1: %d\n" (part1 input) + printf "Part 2: %d\n" (part2 input) -fuel :: [Integer] -> Integer -fuel xs = sum (map (subtract 2 . (`div` 3)) xs) +part1 :: [Integer] -> Integer +part1 xs = sum (map cost xs) -fuelrec :: [Integer] -> Integer -fuelrec xs = sum (map f xs) - sum xs where - f x | x > 0 = x + f ((subtract 2 . (`div` 3)) x) +part2 :: [Integer] -> Integer +part2 xs = sum (map f xs) - sum xs where + f x | x > 0 = x + f (cost x) | otherwise = 0 + +cost :: Integer -> Integer +cost x = div x 3 - 2