在这个代码高尔夫问题中,有一个python 答案,它将英语中从 1 到 99 的所有整数的长度编码为一个大数字:
7886778663788677866389978897746775667552677566755267756675527886778663788677866355644553301220112001
要获得 的长度n
,您只需计算3 + (the_big_number / (10**n)) % 10
。这是如何运作的?
(the_big_number / (10^n)) % 10
拉出大数的n
第 th 最低有效数字,因此长度只是从最右边的“零”(1 + 3 = 4)的长度开始存储,然后是“九十九”的长度(7+3=10) 在最左边。
最短的英文数字是三个字母(“一”、“二”、“六”、“十”),所以每个长度用偏移量三存储。100 之前最长的是 9 + 3 = 12 个字母(例如“七十八”),因此每个数字都可以存储为单个数字。
从右边开始:
请注意,最长的数字“七十七”只有 12 个字母,在减去 3 后可以方便地放入单个数字。