我正试图写一个显示10000位PI数字的程序,很简单,是吗?好吧,有一个问题,文件被限制为5000字节。我试着把"11"改成a以缩短代码,但大约是9000,这对我来说太多了。有什么想法或技巧吗?我不能使用任何其他库或函数在线或从文件中下载PI编号。只是iostream。
您可以使用高位和低位4位将两位数字打包为一个字节。例如,对于3.141……,将14打包为00010100(0001==1,0100==4)的字节。这样,您的10000个数字将占用5000个字节。
当您读取文件时,只需打印3.
,然后是未打包的数据。
这是圆周率的前10000位数字:http://www.nerdparadise.com/math/reference/pi10000/
这些数字的分解是:
0: 968
1: 1026
2: 1021
3: 974
4: 1012
5: 1046
6: 1021
7: 970
8: 948
9: 1014
这意味着最小的编码是:
000: 5
001: 1
010: 2
011: 6
100: 9
101: 4
1100: 3
1101: 7
1110: 0
1111: 8
对于总共4232.5字节的压缩数据。
我将把实现解码器作为一个练习留给读者。
另请参阅此youtube视频,了解如何创建最小编码:
https://www.youtube.com/watch?v=M5c_RFKVkko
似乎制作一个生成pi的程序比压缩pi本身更容易。这是通过格雷戈里·莱布尼茨或尼拉坎塔系列等系列来完成的。关于他们如何工作的文章可以在这里找到。这些程序几乎可以很容易地用任何语言编写。
希望这能有所帮助。