Convert seconds to compound duration: Difference between revisions

Content added Content deleted
(→‎{{header|Haskell}}: Additionally parameterised separators.)
Line 1,785: Line 1,785:


----------------- COMPOUND DURATION STRINGS ----------------
----------------- COMPOUND DURATION STRINGS ----------------

translation :: String -> Int -> Int -> Int -> String
translation local daysPerWeek hoursPerDay n =
intercalate " -> " $
[show, durationString ", " " " daysPerWeek hoursPerDay (words local)] <*> [n]


durationString :: String -> String -> Int -> Int -> [String] -> Int -> String
durationString :: String -> String -> Int -> Int -> [String] -> Int -> String
Line 1,817: Line 1,812:


---------------------------- TEST --------------------------
---------------------------- TEST --------------------------

translation :: String -> Int -> Int -> Int -> String
translation local daysPerWeek hoursPerDay n =
intercalate " -> " $
[show, durationString ", " " " daysPerWeek hoursPerDay (words local)] <*> [n]

main :: IO ()
main :: IO ()
main = do
main = do
let names = "wk d hr min sec"
let names = "wk d hr min sec"
let tests = [7259, 86400, 6000000]
let tests = [7259, 86400, 6000000]

putStrLn "Assuming 24 hrs per day:"
putStrLn "Assuming 24 hrs per day:"
mapM_ (putStrLn . translation names 7 24) tests
mapM_ (putStrLn . translation names 7 24) tests

putStrLn "\nor, at 8 hours per day, 5 days per week:"
putStrLn "\nor, at 8 hours per day, 5 days per week:"
mapM_ (putStrLn . translation names 5 8) tests</lang>
mapM_ (putStrLn . translation names 5 8) tests</lang>