#! /usr/bin/env python3
"""
pe17.py
https://mind.kittttttan.info/py/pe17
"""
to20 = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven',
'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen',
'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
ty = ['twenty', 'thirty', 'forty', 'fifty',
'sixty', 'seventy', 'eighty', 'ninety']
def spell1(n):
if n < 20:
return to20[n]
d = n // 10
e = n % 10
return ty[d-2] + to20[e]
def spell2(n):
if n < 100:
return spell1(n)
h = n // 100
d = n % 100
d = spell1(d)
if not d:
return to20[h] + 'hundred'
return to20[h] + 'hundredand' + d
def spell3(n):
if n < 1000:
return spell2(n)
t = n // 1000
h = n % 1000
h = spell2(h)
if not h:
return spell2(t) + 'thousand'
return spell2(t) + 'thousandand' + h
def pe17(n=1000):
"""
How many letters would be needed
to write all the numbers in words from 1 to 1000?
"""
if n > 99999:
return False
s = 0
for i in range(1, n + 1):
s += len(spell3(i))
print(s)
if __name__ == "__main__":
pe17()