cost :: Int -> Int cost x = (x `div` 3) - 2 fuel :: Int -> [Int] fuel x | cost x <= 0 = [] | otherwise = cost x : fuel (cost x) totalCost :: Int -> Int totalCost = sum . fuel main :: IO () main = do ls <- map read <$> lines <$> readFile "day1.txt" print $ sum $ map totalCost ls