My microwave will win in every case. It has a dial timer.

Ruby Quiz wrote:
> The three rules of Ruby Quiz:
> 
> 1.  Please do not post any solutions or spoiler discussion for this quiz until
> 48 hours have passed from the time on this message.
> 
> 2.  Support Ruby Quiz by submitting ideas as often as you can:
> 
> http://www.rubyquiz.com/
> 
> 3.  Enjoy!
> 
> Suggestion:  A [QUIZ] in the subject of emails about the problem helps everyone
> on Ruby Talk follow the discussion.  Please reply to the original quiz message,
> if you can.
> 
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> 
> by Matthew Moss
> 
> Microwave ovens have had a significant impact on how we cook today. One report
> from 1997 indicated that 90% of US households owned one. Assuming the promise of
> faster cooking times, that's a lot of time saved.
> 
> But I imagine there are microwave users out there who know the trick to saving
> even more time. Knowing that many microwave ovens recognize 90 seconds as the
> same as 1 minute 30 seconds, finger-travel distance is saved. (Yes, it's rather
> insignificant, but don't tell them... us... whatever.)
> 
> Your task is to write a function in Ruby that determines the optimal pattern of
> buttons to hit based on this example button pad (where * is "Cook"):
> 
> 	+---+---+---+
> 	| 1 | 2 | 3 |
> 	+---+---+---+
> 	| 4 | 5 | 6 |
> 	+---+---+---+
> 	| 7 | 8 | 9 |
> 	+---+---+---+
> 	    | 0 | * |
> 	    +---+---+
> 
> Your function should accept an integral time value representing desired seconds
> and should output an integer that indicates the buttons to press on the
> microwave's input pad. The metric for determining what input is more efficient
> is distance (not number of buttons hit). Distance to the Cook button must be
> included in your efficiency calculation. For simplicity in distance
> calculations, you may consider the shape of each button to be square.
> 
> Examples:
> 
> 	# 99 seconds is 1:39, but 99 is less movement than 139
> 	microwave(99) => 99
> 	
> 	# 71 seconds is only two keys, but entering 111 is far less movement.
> 	microwave(71) => 111
> 	
> 	# 120 seconds is 2 minutes, and 200 is slightly less movement than 120
> 	microwave(120) => 200
> 	
> 	# 123 seconds is 2:03, but 203 is a lot more distance
> 	microwave(123) => 123
> 
> Once you've done the basic version, try modifying your code enough to handle
> these:
> 
> 1. We often don't care to be exact. 99 seconds, for example, is basically the
> same as 95 seconds, but more efficient to enter. Modify your function to accept
> a tolerance in seconds, and return answers that are within that tolerance of the
> desired time. Try +-5 and +-10 seconds.
> 
> 2. Try changing the efficiency metric, to something like number of buttons
> pressed, or Manhattan distance.
> 
> 3. Try changing the button dimensions... For example, what happens if each
> button is twice as wide as it is high?
>