danielmwakanema
11/6/2018 - 12:04 PM

memoizeSquares.rb

def memoizeSquares
  map = {}
  Proc.new {
    |numberToSquare|
    if (map[numberToSquare])
      puts 'Fetching from cache...'
      numberToSquare * numberToSquare
    else
      puts 'Calculating result...'
      result = numberToSquare * numberToSquare
      map[numberToSquare] = result
      result
    end
  }
end

squares = memoizeSquares

puts squares.call 8
puts squares.call 8
puts squares.call 9
puts squares.call 10
puts squares.call 10