7 个不稳定版本 (3 个破坏性更新)

0.4.0 2023 年 10 月 13 日
0.3.2 2023 年 9 月 30 日
0.3.0 2023 年 5 月 23 日
0.2.1 2023 年 5 月 22 日
0.1.0 2023 年 5 月 21 日

#528 in 数学


用于 auburn

MIT/Apache

120KB
3K SLoC

lk_math

解决常见数学问题的工具。

原理。

在解决各种问题后,我发现一些问题存在共同的难点。这个 crate 的目标是提供对这些核心问题的通用解决方案。

示例。

线光栅化。我们想计算图像中应该绘制哪些像素。我们可以从线的任一端开始,逐步向另一端移动。在每次迭代中,我们采取最接近理想线的步骤,直到到达另一端。

另一个场景。几个小型政党正在组建一个统一的政党。他们需要创建一个候选人名单。每个政党都希望尽可能多的候选人占据更高的位置。我们知道最大的政党应该排在第一位,但第二位、第三位、第四位等等应该如何排列,以保持尽可能的公平呢?

我们可以将这个问题简化为在一个 N 维“图像”上绘制光栅化线,其中 N 是政党的数量。我们从原点开始,向代表每个政党大小的坐标点绘制线,直到绘制了与所需候选人总数相等的“像素”。

这两个问题都可以使用一个共同的算法来解决。核心难点是在 N 维空间中绘制光栅化线。这个库旨在提供这样的抽象通用解决方案。请注意,建立联系可能会有点棘手。通常,我在从头开始解决新问题的过程中一半时才意识到这一点。

免责声明。

目前,这个库主要用于我个人的使用。我主要想经历发布 crate 的过程,并在我需要时使功能易于在其他项目中使用。这个库是一个正在进行中的作品,未经文档化,API 可能不够用户友好。

大部分功能是为 2022 年 Advent of Code 创建的,你可以在 我的解决方案 中查看一些使用代码,尽管警告,对仓库或解决方案的外观没有投入太多努力。

我非常欢迎任何人尝试这个库,只是目前它在直观性方面的考虑并不多。随时可以联系我、报告问题或贡献。如果有人觉得它有用,那就太酷了!

SPDX-许可协议-标识符: MIT Apache-2.0

依赖项

~0.4–1MB
~24K SLoC