Project Euler 17 using Python -
i'm solving project euler's problem number 17 using python. here's link problem statement:
http://projecteuler.net/problem=17
here's solution in python:
def no_to_words(n): num = str(n) s = "" hunds = n/100 ten = n%100 tens = ten/10 units = ten%10 if(len(num) == 3): if(n == 100): return "one hundred" if(hunds == 1): s = s + "one hundred and" elif(hunds == 2): s = s + "two hundred and" elif(hunds == 3): s = s + "three hundred and" elif(hunds == 4): s = s + "four hundred and" elif(hunds == 5): s = s + "five hundred and" elif(hunds == 6): s = s + "six hundred and" elif(hunds == 7): s = s + "seven hundred and" elif(hunds == 8): s = s + "eight hundred and" else: s = s + "nine hundred and" if(ten == 11): s = s + " eleven" return s elif(ten == 12): s = s + " twelve" return s elif(ten == 13): s = s + " thirteen" return s elif(ten == 14): s = s + " fourteen" return s elif(ten == 15): s = s + " fifteen" return s elif(ten == 16): s = s + " sixteen" return s elif(ten == 17): s = s + " seventeen" return s elif(ten == 18): s = s + " eighteen" return s elif(ten == 19): s = s + " nineteen" return s if(tens == 2): s = s + " twenty" elif(tens == 3): s = s + " thirty" elif(tens == 4): s = s + " forty" elif(tens == 5): s = s + " fifty" elif(tens == 6): s = s + " sixty" elif(tens == 7): s = s + " seventy" elif(tens == 8): s = s + " eighty" elif(tens == 9): s = s + " ninety" if(units == 1): s = s + " one" elif(units == 2): s = s + " two" elif(units == 3): s = s + " three" elif(units == 4): s = s + " four" elif(units == 5): s = s + " five" elif(units == 6): s = s + " six" elif(units == 7): s = s + " seven" elif(units == 8): s = s + " eight" elif(units == 9): s = s + " nine" if(len(num) == 2): if(n == 10): return "ten" if(ten == 11): s = s + "eleven" return s elif(ten == 12): s = s + "twelve" return s elif(ten == 13): s = s + "thirteen" return s elif(ten == 14): s = s + "fourteen" return s elif(ten == 15): s = s + "fifteen" return s elif(ten == 16): s = s + "sixteen" return s elif(ten == 17): s = s + "seventeen" return s elif(ten == 18): s = s + "eighteen" return s elif(ten == 19): s = s + "nineteen" return s if(tens == 2): s = s + "twenty" elif(tens == 3): s = s + "thirty" elif(tens == 4): s = s + "forty" elif(tens == 5): s = s + "fifty" elif(tens == 6): s = s + "sixty" elif(tens == 7): s = s + "seventy" elif(tens == 8): s = s + "eighty" elif(tens == 9): s = s + "ninety" if(units == 1): s = s + " one" elif(units == 2): s = s + " two" elif(units == 3): s = s + " three" elif(units == 4): s = s + " four" elif(units == 5): s = s + " five" elif(units == 6): s = s + " six" elif(units == 7): s = s + " seven" elif(units == 8): s = s + " eight" elif(units == 9): s = s + " nine" if(len(num) == 1): if(units == 1): s = "one" elif(units == 2): s = "two" elif(units == 3): s = "three" elif(units == 4): s = "four" elif(units == 5): s = "five" elif(units == 6): s = "six" elif(units == 7): s = "seven" elif(units == 8): s = "eight" elif(units == 9): s = "nine" if(len(num) == 4): return "one thousand" return s final = "" e in range(1, 1001): s = no_to_words(e) final = final + s ultimate = final.replace(" ", "") print len(ultimate)
now, answer problem (spoiler):
21124
whereas, i'm getting 21121 answer. what's wrong code? can't seem figure out problem.
you never covered case tens==1
. , don't consider exact multiples of 100.
Comments
Post a Comment