Created
March 22, 2012 09:32
-
-
Save shieldsd/2157342 to your computer and use it in GitHub Desktop.
Project Euler #17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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