From: Derek Cannon Date: 2010-04-22T22:39:26+09:00 Subject: Best way to write this method? Could my code below be more Ruby-esque or simpler (using Ruby methods I might not know)? def range_overlaps?(a, b) array = a.to_a & b.to_a !array.empty? end def overlaps?(a, b) # Check if days overlap; if not, no reason to continue method if not range_overlaps?(a.keys, b.keys) return false else a.each_key { |i| b.each_key { |j| # Check each element of each array to see if any ranges overlap if range_overlaps?(a[i], b[j]) return true end } } end return false end ---- Examples of Usage ---- def get_time(s) temp = s.split("-") Time.parse(temp[0], Time.now)..Time.parse(temp[1], Time.now) end a = {:m => [get_time("9:00am-10:00am"), get_time("10:15am-11:45am")], :w => [get_time("9:00am-10:00am")]} b = {:m => [get_time("10:30am-12:00am")], :w => [get_time("10:30am-12:00am")]} c = {:m => [get_time("9:00am-10:00am")], :w => [get_time("9:00am-10:00am")], :f => [get_time("9:00am-10:00am")]} d = {:t => [get_time("9:00am-10:00am")], :r => [get_time("9:00am-10:00am")]} puts overlaps?(a,b) # => false puts overlaps?(a,c) # => true puts overlaps?(a,d) # => false -- Posted via http://www.ruby-forum.com/.