gpt4 book ai didi

javascript - 什么是 JavaScript 中好的数学集实现?

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:52 26 4
gpt4 key购买 nike

哪里有好的 JavaScript 数学集实现?它应该包括交集、并集、补集和(为了加分)笛卡尔积的高效实现。

不,这不是家庭作业。我有一个 yubikey,它是一个 USB 键盘,可以键入从 16 个键码中选择的序列以键入 128 位一次性密码 (otp)。为了使其更有用,软件应根据生成的字符检测键盘布局,并将这些字符映射回它们在“我们”布局中的样子,以与现有后端兼容。

所以我有 93 个不同的 16 个字符序列,代表 yubikey 在 430 种键盘布局中的每一种中可以输入的所有内容。 (出于此目的,许多布局都是相同的。)特定 otp 的可能映射是包含 otp 中每个字符的每个 16 字符序列。

为了有效地找到它,我使用了一个反向索引,将每个可能的字符映射到使用该字符的键盘布局列表。答案是 otp 中每个唯一字符的反向索引的每个条目的交集。这几乎总是以恰好 1 个元素结束。

通过良好的 Set() 实现来编写这个跨浏览器会更容易。

目前的代码位于 http://dingoskidneys.com/~dholth/yubikey/

最佳答案

通过使用 jPaq或者另一个实现 Array.prototype.reduce 和 Array.prototype.forEach 函数的 JavaScript 库,您可以创建一个接受两个或更多数组的笛卡尔积函数。以下是计算两个或多个数组的笛卡尔积的函数代码:

function cartesianProductOf() {
return Array.prototype.reduce.call(arguments, function(a, b) {
var ret = [];
a.forEach(function(a) {
b.forEach(function(b) {
ret.push(a.concat([b]));
});
});
return ret;
}, [[]]);
}

就此在库中而言,我愿意接受有关函数命名的建议,以便我可以将其添加到 jPaq 中。 .顺便说一句,为了不剽窃,我确实从this post得到了使用reduce的想法。 .

关于javascript - 什么是 JavaScript 中好的数学集实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266402/

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