In this code golf question , there is a python answer that encodes the lengths of all integers from 1 to 99 in english to a big number:
7886778663788677866389978897746775667552677566755267756675527886778663788677866355644553301220112001
To get the length of n
, you just have to calculate 3 + (the_big_number / (10**n)) % 10
. How does this work?
(the_big_number / (10^n)) % 10
pulls out the n
th least significant digit of the big number, so the lengths are just stored starting with the length of "zero" (1+3=4) at the far right, and following over to the length of "ninety-nine" (7+3=10) at the far left.
The shortest English numbers are three letters ("one", "two", "six", "ten"), so each length is stored with an offset of three. The longest prior to 100 are 9 + 3 = 12 letters (eg "seventy-eight"), so each number can be stored as a single digit.
Starting from the right:
Note that that the longest number "seventy seven" has only 12 letters, which conveniently fits in a single digit after subtracting 3.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.