Skip to content

Instantly share code, notes, and snippets.

@dzyubam
Created July 20, 2011 20:11
Show Gist options
  • Save dzyubam/1095806 to your computer and use it in GitHub Desktop.
Save dzyubam/1095806 to your computer and use it in GitHub Desktop.
Project Euler -- Problem 17
#
# Euler Problem 17
# http://projecteuler.net/index.php?section=problems&id=17
#
units = map(len, ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']) #[0, 3, 3, 5, 4, 4, 3, 5, 5, 4]
tens = map(len, ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']) #[0, 0, 6, 6, 5, 5, 5, 7, 7, 6]
teens = map(len, ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'])
def how_long(num):
summ = 0
while num != 0:
if (num > 99):
if (str(num)[1:] != '00'):
hundred = str(num)
summ = summ + units[int(hundred[0])] + 10 # +10 stands for 'hundred and'
num = int(hundred[1:])
else:
hundred = str(num)
summ = summ + units[int(hundred[0])] + 7 # +7 stands for 'hundred'
num = 0
elif (num < 100 and num > 0):
if (num < 10):
summ = summ + units[num]
num = 0
elif (num > 9 and num < 20):
summ = summ + teens[num-10]
num = 0
else:
number = str(num)
summ = summ + tens[int(number[0])] + units[int(number[1])]
num = 0
else:
print 'final ELSE, num: %s' % num
return summ
print sum([how_long(x) for x in range(1000)]) + len('onethousand')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment