This is not my code! Taken from this SO post.
You can use this to get the number of letters in the English representation of an integer, from 0 to 99.
So for example 5 (five) is len("five")
which is 4.
This is not my code! Taken from this SO post.
You can use this to get the number of letters in the English representation of an integer, from 0 to 99.
So for example 5 (five) is len("five")
which is 4.
len_of_num = lambda x: 3+int('1yrof7i9b1lsi207bozyzg2m7\
sclycst0zsczde5oks6zt8pedm\
nup5omwfx56b29',36)/10**x%10
for x in range(100):
print "The length of the word for {0} is {1}.".format(x,
len_of_num(x))
I love Python!
I often play with D and C#.
Seems to work until 20, then does not count dash in numbers like twenty-one, over 99 does not work.
Here my test and suggestion if you need number as string using more conventinal base than 36 (16)
from __future__ import print_function ## let's practice Python 3 printing
import sys
sys.path.append('D:\test') ## put here the location of the snippet
from intoeng import inttoeng ## replace with name of the file you saved integer to English snippet
def numberlength(x):
try:
return int('433544355436688779886aacbbaccb6aacbbaccb599baa9bba599baa9bba599baa9bba7bbdccbddc6aacbbaccb6aacbbaccb'[x],16)
except IndexError:
raise ValueError,'Number word length out of range 0..99'
## string copied from run from:
## res=''
## for i in range(100):
## res+=hex(len(inttoeng(i)))[-1]
## print res
### from original post
len_of_num = lambda x: 3+int('1yrof7i9b1lsi207bozyzg2m7\
sclycst0zsczde5oks6zt8pedm\
nup5omwfx56b29',36)/10**x%10
for x in range(101): ## extended to see behaviour with wrong input
# this is test of string, will of course match as the
# inttoeng is source of information in string,
# 100 will raise error from numberlength if next line uncommented
len_of_num=numberlength
diff = len(inttoeng(x))-len_of_num(x)
print("The length of the word for {0} is {1}".
format(x,
len_of_num(x),
),
", {0}, difference {1}".
format(len(inttoeng(x)), diff) if diff
else ' matching.'
)
Posted my version to SO link with original '-' does not count counts:
n=input();r='%i is '%n
while n-4:n=int('43354435543668877988699baa9bba699baa9bba588a998aa9588a998aa9588a998aa97aacbbaccb699baa9bba699baa9bba'[n],16);r+='%i.\n%i is '%(n,n)
print r+'magic.'