Dynamic programming using closures in Ruby
I was playing around with ruby and proc blocks caught my fancy. Here’s the code snippet (not a perfect algorithm, but shows the use of closures)
def getAngleChecker(start_angle, end_angle)
return Proc.new { |angle| (start_angle <= angle && angle < end_angle) }
end
acuteAngleChecker = getAngleChecker(0, 90)
rightAngleChecker = getAngleChecker(90, 91)
obtuseAngleChecker = getAngleChecker(91, 180)
puts acuteAngleChecker.call(12) #true
puts acuteAngleChecker.call(90) #false
puts rightAngleChecker.call(90) #true
puts obtuseAngleChecker.call(112) #true
For some one looking for more info on closures, following resources may be useful:
http://martinfowler.com/bliki/Closure.html
http://blog.codahale.com/2005/11/24/a-ruby-howto-writing-a-method-that-uses-code-blocks/
leave a comment