19 lines
411 B
Text
19 lines
411 B
Text
func polymod(n, *divs) {
|
|
gather {
|
|
divs.each { |i|
|
|
var m = take(n % i)
|
|
(n -= m) /= i
|
|
}
|
|
take(n)
|
|
}
|
|
}
|
|
|
|
func compound_duration(seconds) {
|
|
(polymod(seconds, 60, 60, 24, 7) ~Z <sec min hr d wk>).grep { |a|
|
|
a[0] > 0
|
|
}.reverse.map{.join(' ')}.join(', ')
|
|
}
|
|
|
|
[7259, 86400, 6000000].each { |s|
|
|
say "#{'%7d' % s} sec = #{compound_duration(s)}"
|
|
}
|