我寻求一种算法,它可以让我将输入的位序列表示为字母('a' .. 'z'),以最小的方式使位流可以从字母中重新生成,而无需保存整个序列在记忆中。
也就是说,给定一个外部位源(每次读取都返回一个几乎随机的位),并且用户输入了一些位,我想打印出可以代表这些位的最少字符数。
理想情况下,应该有一个参数化 - 在需要一些浪费之前有多少内存与最大位。
效率目标 - 与位的 base-26 表示相同的字符数。
非解决方案:
如果存在足够的存储空间,则存储整个序列并使用大整数 MOD 26 运算。
将每 9 位转换为 2 个字符 - 这似乎不是最理想的,浪费了字母输出的 25% 的信息容量。