RosettaCodeData/Task/Convert-seconds-to-compound-duration/Pluto/convert-seconds-to-compound-duration.pluto
2026-04-30 12:34:36 -04:00

19 lines
531 B
Text

local function duration(s)
if s < 1 then return "0 sec" end
local dur = ""
local divs = {7, 24, 60, 60, 1}
local units = {"wk", "d", "hr", "min", "sec"}
local t = divs:reduce(|prod, div| -> prod * div, 1)
for i = 1, #divs do
local u = s // t
if u > 0 then
dur ..= $"{u} {units[i]}, "
s %= t
end
t //= divs[i]
end
if dur:endswith(", ") then dur = dur:sub(1, -3) end
return dur
end
for {7259, 86400, 6000000} as s do print(duration(s)) end