Soluzione Aprile 2003 di Luigi Panzeri

Vedi tutte le pagine e le modifiche recenti o scarica i sorgenti nella pagina


Peccato che memoize vada chiamata in un modo cosi’ strano.

def slowid (x,y)
  sleep 5
  x
end
def memoize(&proc)
  if not defined? @cache
    @cache = Hash.new
  end
  a = Proc.new { |x|
    if @cache.has_key? x
      @cache[x]
    else
      ret = proc.call *x
      @cache[x] = ret
    end
  }
end
newslowid = memoize { |x| slowid *x}
puts (newslowid.call 3,2)
puts (newslowid.call 3,2)
Updated on April 23, 2006 19:54 by Ruby Fan (151.37.99.177)