Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module Main where
  2.  
  3. import System.IO (isEOF)
  4.  
  5. getModuleMass :: IO (Maybe Integer)
  6. getModuleMass = do
  7.   done <- isEOF
  8.   if done
  9.     then return Nothing
  10.     else Just <$> read <$> getLine
  11.  
  12. fuelRequirement :: Integer -> Integer
  13. fuelRequirement x = (x `div` 3) - 2
  14.  
  15. totalFuelRequirement :: IO Integer
  16. totalFuelRequirement = addFurtherRequirements 0
  17.   where addFurtherRequirements acc =
  18.           getModuleMass >>=
  19.             maybe
  20.               (pure acc)
  21.               (\mass -> addFurtherRequirements (acc + (fuelRequirement mass)))
  22.  
  23. main :: IO ()
  24. main = (show <$> totalFuelRequirement) >>= putStrLn
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement