kotp
7/1/2010 - 3:40 AM

dsh.rb

=begin
doctest: setup
>> require 'dsh'
=> true
doctest: years 
>> years = dsh [:year, :day, :hour, :minute, :second, :millisecond], [    1,    1,    24,      60,      60,         1000]
=> {:second=>31536000, :minute=>525600, :hour=>8760, :day=>365, :year=>1}
doctest: yrd
>> yds = dsh [:yd, :ft, :in], [1, 3, 12]
=> {:yd=>1, :ft=>3, :in=>36} 
=end
def dsh(un, va)
  (va.size - 1).downto(1) {|j| va[j] = va[0 .. j].inject(1) { |pr, it| pr * it } }
  ar = un.zip va
  hs = {}
  ar.each {|i| hs[i[0]] = i[1] }
  hs
end