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

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -