gpt4 book ai didi

algorithm - 如何将数字序列转换为单个数字?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:38:39 27 4
gpt4 key购买 nike

我想将数字序列转换为单个数字,该数字将保留各个值及其位置。例如提供以下顺序-

1,6,7,8,9,45,67

在这里,举个例子,如果我应用简单的加法,即 1+6+7+8+9+45+67 那么就会生成一个数字。但从那没有。我们不能用它们的顺序提取单个数字[即1,6,7,8,9,...]。

有没有什么方法可以在没有任何歧义推导的情况下实现此功能[即只会从一个数字中提取一组唯一的数字。]?是否有任何数学函数有助于从该数字中取回各个元素?

最佳答案

您可以将其转换为以 N 为基数的数字,其中 N 比将出现在您的输入序列中的最大值大一。

更新

根据各种评论,我想提供一个可能更容易实现的替代解决方案。您可以将该序列视为 UTF-8 编码的字符串并使用 Huffman coding使用自定义字典来实现紧凑的表示。

自定义字典允许您用很少的位存储非常常见的字符(例如,序列分隔符 ',' 和单个字符 '0'..'9' 可以用少至 3 位存储,但是您发现统计上可能出现的其他数字也可以存储在短位序列中。例如,如果您发现“42”经常出现,则可以将“42”存储在几个位中。

如果您只将特殊代码分配给“,”和“0”到“9”,则在保留逗号分隔序列成员的同时,输入字符串中每个字符的平均位数将少于 4 位。查找常见的多字符子字符串并将它们添加到字典中只会提高该比率。

使用自定义字典还意味着您不必将字典存储在压缩数据的 header 中,因为它对您来说是众所周知的。

我使用 SharpZipLib 做了类似的事情

http://www.icsharpcode.net/opensource/sharpziplib/

http://community.sharpdevelop.net/forums/p/8255/23219.aspx

用zlib也很容易做到

Compressing small piece of data

关于algorithm - 如何将数字序列转换为单个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12229374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com