Skip to content

Instantly share code, notes, and snippets.

@shieldsd
Created March 22, 2012 09:32
Show Gist options
  • Save shieldsd/2157342 to your computer and use it in GitHub Desktop.
Save shieldsd/2157342 to your computer and use it in GitHub Desktop.
Project Euler #17
def say_digit(n):
number = ''
if n == 1:
number = 'one'
elif n == 2:
number = 'two'
elif n == 3:
number = 'three'
elif n == 4:
number = 'four'
elif n == 5:
number = 'five'
elif n == 6:
number = 'six'
elif n == 7:
number = 'seven'
elif n == 8:
number = 'eight'
elif n == 9:
number = 'nine'
return number
def say_ten(n):
number = ''
if n == 20:
number = 'twenty'
elif n == 30:
number = 'thirty'
elif n == 40:
number = 'forty'
elif n == 50:
number = 'fifty'
elif n == 60:
number = 'sixty'
elif n == 70:
number = 'seventy'
elif n == 80:
number = 'eighty'
elif n == 90:
number = 'ninety'
return number
def say_teen(n):
number = ''
if n == 10:
number = 'ten'
elif n == 11:
number = 'eleven'
elif n == 12:
number = 'twelve'
elif n == 13:
number = 'thirteen'
elif n == 14:
number = 'fourteen'
elif n == 15:
number = 'fifteen'
elif n == 16:
number = 'sixteen'
elif n == 17:
number = 'seventeen'
elif n == 18:
number = 'eighteen'
elif n == 19:
number = 'nineteen'
return number
def say(n):
number = ''
if n == 1000:
number = 'onethousand'
n = 0
if n >= 100 and n <= 999:
number = say_digit(n / 100) + 'hundred'
n = n % 100
if n > 0:
number = number + 'and'
if n >= 20 and n < 100:
number = number + say_ten(n - n % 10)
n = n - n / 10 * 10
if n >= 10 and n < 20:
number = number + say_teen(n)
if n < 10:
number = number + say_digit(n)
return number
print sum(len(say(i)) for i in range(1, 1001))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment