diff --git a/e_17.py b/e_17.py index 8cbe1a6..41cb570 100755 --- a/e_17.py +++ b/e_17.py @@ -16,11 +16,40 @@ British usage. ##--- """ -def fun(): +def letters_to_1000(): """ + Returns the number of letters used from 1 to 1000 """ + + number_of_hundreds = 9 + number_of_ties = 8 * number_of_hundreds # tens are specials + number_of_tens = 9 + number_of_thousands = 1 + number_of_unities = 10 - return 1 + ands = ["and"] + numbers = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] + tens = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"] + ties = ["twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" ] + hundreds = ["hundred"] + thousands = ["thousand"] + + andl = char_list(ands) * number_of_hundreds * (100 - 1) + numbersl = char_list(numbers) * (number_of_hundreds + 1) * number_of_tens + hunpref = 100 * char_list(numbers) # one hundred, two hundred and so on. . . + tensl = char_list(tens) * (number_of_hundreds + 1) + tiesl = char_list(ties) * (number_of_hundreds + 1) * number_of_unities + hundredsl = char_list(hundreds) * number_of_hundreds * 100 + thousandsl = char_list(thousands) * number_of_thousands + onethousand = 3 # for the "one" thousand + + return andl + numbersl + tensl + tiesl + hundredsl + thousandsl + hunpref + onethousand + +def char_list(list_val): + """ + Returns the total number of characters in a list + """ + return sum([len(val) for val in list_val]) if __name__ == '__main__': - print "Answer : %d" % (fun()) + print "Answer : %d" % (letters_to_1000())