generated from mwc/problemset_numberwords
All functions were given proper if/then statements
to write out the full wording for any number typed up all the way to one million. This particular lab certainly made more sense than others as it truly felt like every step built upon the other and provided the necessary foundation to succeed in writing remaining code. When some of the answers were provided, the rest began to fall in line.
This commit is contained in:
@@ -11,43 +11,47 @@ TWEEN_AND_TEEN_NAMES = [
|
||||
"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"
|
||||
]
|
||||
TENS_NAMES = [
|
||||
"ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"
|
||||
"", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"
|
||||
]
|
||||
|
||||
def int_under_1000000_to_str(number):
|
||||
"Returns a textual representation of the number."
|
||||
check_number_in_range(abs(number), 0, MAXIMUM)
|
||||
if number < 1000:
|
||||
return int_under_1000_to_str(number)
|
||||
else:
|
||||
thousands, hundreds = divide_with_remainder(number, 1000)
|
||||
thousands_text = int_under_1000_to_str(thousands)
|
||||
hundreds_text = int_under_1000_to_str(hundreds)
|
||||
return thousands_text + " thousand " + hundreds_text
|
||||
thousands, hundreds_tens_ones = divide_with_remainder(number, 1000)
|
||||
if hundreds_tens_ones == 0:
|
||||
return int_under_1000_to_str(thousands) + " thousand"
|
||||
else:
|
||||
return int_under_1000_to_str(thousands) + " thousand " + int_under_1000_to_str(hundreds_tens_ones)
|
||||
|
||||
def int_under_1000_to_str(number):
|
||||
"Returns a textual representation of the number"
|
||||
check_number_in_range(number, 0, 1000)
|
||||
if number < 100:
|
||||
return int_under_100_to_str(number)
|
||||
else:
|
||||
hundreds, tens = divide_with_remainder(number, 100)
|
||||
hundreds_text = int_under_10_to_str(hundreds)
|
||||
tens_text = int_under_100_to_str(tens)
|
||||
return hundreds_text + " hundred and " + tens_text
|
||||
hundreds, tens_and_ones = divide_with_remainder(number, 100)
|
||||
if tens_and_ones == 0:
|
||||
return int_under_10_to_str(hundreds) + " hundred"
|
||||
else:
|
||||
return int_under_10_to_str(hundreds) + " hundred and " + int_under_100_to_str(tens_and_ones)
|
||||
|
||||
|
||||
def int_under_100_to_str(number):
|
||||
check_number_in_range(number, 0, 100)
|
||||
tens, ones = divide_with_remainder(number, 10)
|
||||
if tens == 0:
|
||||
return int_under_10_to_str(number)
|
||||
elif tens == 1:
|
||||
return TWEEN_AND_TEEN_NAMES[ones]
|
||||
if number < 20:
|
||||
return int_under_20_to_str(number)
|
||||
else:
|
||||
return TENS_NAMES[tens] + '-' + int_under_10_to_str(ones)
|
||||
tens, ones = divide_with_remainder(number, 10)
|
||||
if ones == 0:
|
||||
return TENS_NAMES[tens]
|
||||
else:
|
||||
return TENS_NAMES[tens] + "-" + int_under_10_to_str(ones)
|
||||
|
||||
def int_under_20_to_str(number):
|
||||
if number < 10:
|
||||
return int_under_10_to_str(number)
|
||||
else:
|
||||
return TWEEN_AND_TEEN_NAMES[number-10]
|
||||
|
||||
def int_under_10_to_str(number):
|
||||
check_number_in_range(number, 0, 10)
|
||||
return DIGIT_NAMES[number]
|
||||
|
||||
def check_number_in_range(number, minimum, maximum):
|
||||
|
||||
Reference in New Issue
Block a user