gpt4 book ai didi

perl - 在 Perl 中进行 base36 算术的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 13:07:38 25 4
gpt4 key购买 nike

在 Perl 中进行 base36 算术的最佳方法是什么?

更具体地说,我需要能够执行以下操作:

  • 对以 36 为底的 N 位正数进行运算(例如,数字是 0-9 A-Z)

    N 是有限的,比如 9
  • 提供基本的算术,至少以下 3 个:
  • 加法(A+B)
  • 减法 (A-B)
  • 整个部门,例如地板(A/B)。
  • 严格来说,我真的不需要 base10 转换能力——数字将 100% 的时间在 base36 中。因此,如果解决方案没有实现从 base36 到 base10 的转换,我很好,反之亦然。

  • 我不太关心解决方案是强力“转换为基数 10 并返回”还是转换为二进制,或者是“ native ”执行 baseN 操作的一些更优雅的方法(如上所述,到/从 base10 转换不是要求)。我唯一的三个考虑是:
  • 它符合
  • 以上的最低规范
  • 这是“标准”。目前我们正在使用基于 base10 转换的旧的本土模块,手工完成,这是错误和糟糕的。

    我宁愿用一些常用的 CPAN 解决方案代替它,而不是从头开始重写我自己的自行车,但如果不存在更好的标准可能性,我完全有能力 build 它。
  • 它必须是快的(虽然不是闪电般的快)。需要 1 秒来总结 2 个 9 位 base36 数字的东西比我自己可以滚动的任何东西都要糟糕 :)

  • 附言只是为了提供一些背景信息,以防人们除了回答上面的技术问题之外还决定为我解决我的 XY 问题:)

    我们有一棵相当大的树(作为一堆边存储在 DB 中),我们需要在该树的子集上叠加顺序。树的维度在深度和广度上都很大。树非常积极地更新(插入和删除以及分支移动)。

    目前这是通过第二个包含 3 列的表来完成的: parent_vertex, child_vertex, local_order , 其中 local_order是由 A-Z0-9 构建的 9 个字符的字符串(例如,基数为 36 的数字)。

    其他注意事项:
  • 要求本地顺序对每个 child 都是唯一的(显然每个 parent 都是唯一的),
  • parent 的任何完全重新排序都有些昂贵,因此实现是尝试分配 - 对于有 X 个 child 的 parent - 在 0 和 36**10-1 之间稍微均匀分布的订单,因此几乎没有树插入会导致完全重新排序。
  • 最佳答案

    怎么样Math::Base36 ?

    关于perl - 在 Perl 中进行 base36 算术的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2670869/

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