代码之家  ›  专栏  ›  技术社区  ›  Adrian

这个整数编码是如何工作的?

  •  1
  • Adrian  · 技术社区  · 14 年前

    this code golf question ,有一个 python answer 它将英语中从1到99的所有整数的长度编码为一个大数字:

    7886778663788677866389978897746775667552677566755267756675527886778663788677866355644553301220112001
    

    为了得到 n ,你只要计算一下 3 + (the_big_number / (10**n)) % 10 . 这是怎么回事?

    2 回复  |  直到 7 年前
        1
  •  4
  •   mqp    14 年前

    (the_big_number / (10^n)) % 10 拉出 n

    最短的英文数字是三个字母(“一”、“二”、“六”、“十”),因此每个长度都以三个偏移量存储。100之前最长的字母是9+3=12个字母(例如“七十八”),因此每个数字可以存储为一个数字。

        2
  •  2
  •   BlueRaja - Danny Pflughoeft    14 年前

    从右边开始:

    • 第一个数字是“0”减去3的字母数
    • 第二个数字是“一”中有多少个字母,减去3
    • 第三个数字。。。
    • …100人 数字是“九十九”减去三的字母数。

    注意,最长的数字 “七十七”