2013-03-14 82 views
0

有人知道很短的数字/二进制串的压缩吗?短数字串的压缩

例如,我想压缩我想压缩的2,1,3号或二进制任何数字(0-9)或即3,2,6,4

二进制6,1,4,13

适用于挑选4和euromillions研究。

回答

0

我抬头看了EuroMillions和Pick 4.我发现前者的范围是1-50,后者是0-9。我认为我们可以假设任何数字都是可能的(某些压缩方案利用了某些数字比其他数字更可能发生的事实)。

你在哪个平台上编码?像Python或JavaScript这样的高级语言?或者像C或C++这样的低级语言?你是否希望存储大量的数字序列?或者你只是试图想出一个有效的内存表示?

如果您想在内存中使用大集合,您可以做出的最合理的折衷方案是确保每个字符不超过1个字节(可以保存0到255之间的值)。在高级语言中这可能比较困难,这些语言通常只有一个“数字”类型,没有更精细的粒度。但是C/C++甚至Java应该允许你这样做。

如果您想在光盘上存储大量这些同等可能的数字,请查看存储数字所需的最小位数。对于EuroMillions,您需要6位来存储一个数字(2^6 = 64)。然后将它们存储在比特流中,以便每个数字节省2位。使用Pick 4,您可以在一个字节中编码2个数字。