Rosetta Code
Number names
Spell small whole numbers in English words for predictable sample inputs.
Source
rosettacode/popular/number_names.vibe
# title: Number names
# source: https://rosettacode.org/wiki/Number_names
# category: Rosetta Code
# difficulty: Intermediate
# summary: Spell small whole numbers in English words for predictable sample inputs.
# tags: popular, strings, formatting, math
# vibe: 0.2
def ones
[
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine"
]
end
def teens
[
"ten",
"eleven",
"twelve",
"thirteen",
"fourteen",
"fifteen",
"sixteen",
"seventeen",
"eighteen",
"nineteen"
]
end
def tens_names
[
"",
"",
"twenty",
"thirty",
"forty",
"fifty",
"sixty",
"seventy",
"eighty",
"ninety"
]
end
def under_hundred(number)
if number < 10
ones[number]
elsif number < 20
teens[number - 10]
else
tens = tens_names[number / 10]
remainder = number % 10
if remainder == 0
tens
else
tens + "-" + ones[remainder]
end
end
end
def under_thousand(number)
hundreds = number / 100
remainder = number % 100
if hundreds == 0
under_hundred(remainder)
else
text = ones[hundreds] + " hundred"
if remainder == 0
text
else
text + " " + under_hundred(remainder)
end
end
end
def number_name(number)
if number < 1000
under_thousand(number)
else
thousands = number / 1000
remainder = number % 1000
text = under_thousand(thousands) + " thousand"
if remainder == 0
text
else
text + " " + under_thousand(remainder)
end
end
end
def run
{
zero: number_name(0),
forty_two: number_name(42),
three_hundred_five: number_name(305),
nine_hundred_ninety_nine: number_name(999),
twelve_thousand_three_hundred_four: number_name(12304)
}
end
Output
Press run to execute run from this example.