On Wed, 20 Dec 2000, Steven Grady wrote:

>     # Given the number of seconds, convert to English description
> 
>     # !!! simpler table
>     table = [ [ 31557816, 'year'    ],
> 	      [  2629818, 'month'   ],
> 	      [    86400, 'day'     ],
> 	      [     3600, 'hour'    ],
> 	      [       60, 'min'     ],
> 	      [        1, 'sec'     ] ]
> 

Just for the collection:  here's one reasonably fast one:

   def tfactor(time)
     result = ""
     $table.each do |secs_per, thing, plur|  # using global var $table
       n = time / secs_per
       time %= secs_per
       if n > 0
	 if n > 1
	   thing = plur || thing + 's'
	 end
	 result += "#{n} #{thing} "
       end
     end
     result
   end


and one reasonably cute one:

   def t2factor(time)
     result = ""
     $table.map do |s,t,p|
       n, time = time / s, time % s
       if n > 1
	 t = p || t + 's'
       end
       [n,t]
     end .find_all do |n,|
       n > 0
     end .each do |n,t|
       result += "#{n} #{t} "
     end
     result
   end


and one reasonably obfuscated one :-)

   def t3factor(e)
     j = ""
     $table.each do |x,y,z|
       q,e = %w/\/ %/.map {|u| e.send(u,x)}
       0   <q and q<
       2   || y=z ||
       %Qt#{y}stand
	j+=%Qb#{q} #{y} bend
     j
   end


David

-- 
David Alan Black
home: dblack / candle.superlink.net
work: blackdav / shu.edu
Web:  http://pirate.shu.edu/~blackdav