在this code golf question中,有一个python answer,它将英语中所有整数的长度从1到99编码为一个大数字:
7886778663788677866389978897746775667552677566755267756675527886778663788677866355644553301220112001
要获得n
的长度,您只需计算3 + (the_big_number / (10**n)) % 10
。这是如何工作的?
答案 0 :(得分:4)
(the_big_number / (10^n)) % 10
拉出大数字的n
个最低位数,所以长度只是从最右边的“零”(1 + 3 = 4)长度开始存储,并在最左边跟随“九十九”(7 + 3 = 10)的长度。
最短的英文数字是三个字母(“一个”,“两个”,“六个”,“十个”),因此每个长度都存储有三个偏移量。 100之前最长的是9 + 3 = 12个字母(例如“七十八”),因此每个数字可以存储为一个数字。
答案 1 :(得分:2)
从右边开始:
请注意,最长的数字“七十七”只有12个字母,在减去3之后可以方便地输入一个数字。