Skip to content

Instantly share code, notes, and snippets.

@airvzxf
Last active December 16, 2015 19:08
Show Gist options
  • Save airvzxf/5482500 to your computer and use it in GitHub Desktop.
Save airvzxf/5482500 to your computer and use it in GitHub Desktop.
Codecery :: Exercise 004
require 'test/unit'
extend Test::Unit::Assertions
FIRST_TEN = ["zero ", "one ", "two ", "three ", "four ", "five ", "six ", "seven ", "eight ", "nine "]
SECOND_TEN = ["ten ", "eleven ", "twelve ", "thirteen ", "fourteen ", "fifteen ", "sixteen ", "seventeen ", "eighteen ", "nineteen "]
OTHER_TENS = ["", "", "twenty ", "thirty ", "forty ", "fifty ", "sixty ", "seventy ", "eighty ", "ninety "]
HUNDRED = "hundred "
def number2text(number)
number_str = number.to_s
total_dig = number_str.length
number_letter = ""
return false if number > 999
number_letter = FIRST_TEN[0] if number == 0
if number > 99
number_letter = FIRST_TEN[(number_str[total_dig-3]).to_i] + HUNDRED
number = number - (number_str[total_dig-3]+'00').to_i
end
if number > 19
if number % 10 == 0
number_letter = number_letter + OTHER_TENS[(number_str[total_dig-2]).to_i]
number = number - (number_str[total_dig-2]+number_str[total_dig-1]).to_i
else
number_letter = number_letter + OTHER_TENS[(number_str[total_dig-2]).to_i]
number = number - (number_str[total_dig-2]+'0').to_i
end
end
if number > 9
number_letter = number_letter + SECOND_TEN[(number_str[total_dig-1]).to_i]
number = number - (number_str[total_dig-2]+number_str[total_dig-1]).to_i
end
if number > 0
number_letter = number_letter + FIRST_TEN[(number_str[total_dig-1]).to_i]
number = number - (number_str[total_dig-1]).to_i
end
number_letter.strip()
end
assert number2text(4) == 'four', "First"
assert number2text(133) == 'one hundred thirty three', "Second"
assert number2text(12)=='twelve', "Third"
assert number2text(101)=='one hundred one', "Fifth"
assert number2text(212)=='two hundred twelve', "Sixth"
assert number2text(40)=='forty', "Seventh, forty - it is correct"
puts 'All ok'
puts ''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment