有没有办法在恒定工作空间中进行任意大小和任意基本转换。也就是说,要使用 1 对 1 映射(最好但不一定)保留字典顺序并给出顺序结果,将范围内的n
数字序列转换为范围内[1,m]
的ceiling(n*log(m)/log(p))
数字序列?[1,p]
我对作为管道功能可行的解决方案特别感兴趣,ei 能够处理比存储在 RAM 中更大的数据集。
我发现了许多需要与输入大小成比例的“工作空间”的解决方案,但还没有一个解决方案可以摆脱恒定的“工作空间”。
放弃顺序约束有什么不同吗?即:允许按字典顺序输入导致非按字典顺序输出:
F(1,2,6,4,3,7,8) -> (5,6,3,2,1,3,5,2,4,3)
F(1,2,6,4,3,7,9) -> (5,6,3,2,1,3,5,2,4,5)
一些想法:
这可能有用吗?
streamBase n -> convert(
n
,lcm(n,p)
) -> convert(lcm(n,p)
,p
) -> streamBase p
(lcm
最小公倍数在哪里)