We’ve now got a Ruby focus group at work, and one of the first things to be set up has been a weekly programming exercise [intranet link], in the style of Ruby Quiz. It’s now week two, and the problem is slightly more complex than last week’s gentle FizzBuzz introduction. Here’s the specification:
This time, the challenge is to come up with some Ruby code that converts a positive integer to its English language
equivalent. For example:
1 => one
10 => ten
123 => one hundred and twenty three
10,456 => ten thousand four hundred and fifty six
1,234,123 => one million two hundred thirty four thousand one hundred and twenty three
The code should work from numbers 1 – 10,000,000,000 (ten billion) but if it works for bigger numbers its all good.
For an extra challenge, when the strings for the numbers for 1 – 10,000,000,000 are sorted alphabetically, which is the
first odd number in the list?
I thought it might be interesting (to me, at least!) to record the process I go through to reach the solution, rather than just sharing the finished article. I’m using a behaviour-driven approach, although the process for writing a single method obviously doesn’t touch on a lot of the wider aspects of BDD.
So here it is, warts and all (I’m writing this as I go along, so I have no idea how long this post is going to get, or whether I’ll even arrive at a solution at all!)