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

2024-01-09

哪里有一个好的 JavaScript 数学集合实现?它应该包括交集、并集、补集和(奖励点)笛卡尔积的有效实现。

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

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

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

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

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


通过使用jPaq http://jpaq.org/或另一个实现 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 http://jpaq.org/。顺便说一句,为了不抄袭,我确实想到了使用reduce from这个帖子 https://stackoverflow.com/questions/4796678/javascript-golf-cartesian-product/4797658#4797658.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 中什么是好的数学集合实现? 的相关文章

随机推荐

  • 为什么需要使用 EntryPoint 属性定义 DLLImport

    在经历的同时SWig http www swig org 生成的包装器中 我发现 PInvoke 没有定义任何入口点 但有些地方确实有入口点 那么它们之间有什么区别呢 什么时候需要定义 EntryPoint 什么时候不需要 定义无Entry
  • 按钮图像距离按钮顶部太远;太靠近按钮底部

    我正在 VB NET 2005 中开发 Windows 窗体 我想要一些带有图像的按钮 我说的是普通的 普通的 System Windows Forms Button 我已按照我想要的方式设置了所有内容 但图像在按钮上显示得太低 因此图标的
  • 如何打包不是使用 vagrant up 命令创建的现有虚拟机?

    我安装了 VirtualBox 然后在其中安装了 Ubuntu 12 10 Server Base OS 我在里面安装了各种php包和其他包 我的朋友推荐我使用 Vagrant 这样我就可以轻松地与我的队友分享我的设置 因为我当前的 Vir
  • pygame全屏模式退出

    我正在运行这个小程序 它以全屏模式将图像加载到屏幕上 但是一旦加载 程序将不会通过任何组合键退出 我最终不得不重置计算机才能完成我正在做的任何其他事情 import pygame pygame init WIDTH 1366 HEIGHT
  • 获取由 css column-width 创建的列数[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Javascript 中获取 css3 多列计数 https stackoverflow com questions 6989306 how to get css3 multi column
  • 为什么ArrayList类的removeRange方法不起作用? [复制]

    这个问题在这里已经有答案了 我正在尝试使用removeRange从中删除某些元素的方法ArrayList 我从这里开始了解这个方法 http docs oracle com javase 7 docs api java util Array
  • 如何组织嵌入式项目中的代码?

    高度嵌入式 有限的代码和 RAM 大小 项目给代码组织带来了独特的挑战 我见过很多完全没有组织的项目 主要是由硬件工程师完成的 根据我的经验 他们通常不关心代码的非功能方面 但是 我一直在尝试相应地组织我的代码 硬件特定 驱动程序 初始化
  • 文本浮动在图像旁边的块中

    我想实现以下定位 两个不同的文本 块中 浮动 内嵌在图像旁边 div 内的所有内容 我一直在尝试使用不同的显示设置 块 内联文本等 但它仍然无法正常工作 HTML div class res img src gt span TITLEe s
  • 在 MATLAB 中序列化多维数组以进行数据库插入的最简单方法?

    我似乎找不到任何用于序列化数据的标准函数 我有一个大型 128x51 数组 需要将其存储在单个数据库字段中 如果没有某种序列化 事情就会出现问题 解决这个问题的最好方法是什么 我不太使用matlab 所以我不熟悉标准程序 一种可能性是使用T
  • 使用 openrowset 将 Excel 文件读入临时表;我如何引用该表?

    我正在尝试编写一个存储过程 它将 Excel 文件读入临时表 然后处理该表中的一些数据 然后将该表中选定的行插入到永久表中 所以 它是这样开始的 SET SQL select into mytemptable FROM OPENROWSET
  • 单击“模块”选项卡时,是否可以让 Doxygen 直接显示唯一的模块?

    考虑以下单文件项目 defgroup api Public API This is foo and bar together ingroup api void foobar Nothing here to see 在包含该文件的目录中 我运
  • 在循环中延迟释放资源的正确方法?

    我需要在循环中对数据库进行 SQL 查询 for rows Next fields err db Query if err nil defer fields Close do something with fields 什么会更好 保持原样
  • WPF MVVM 文本框验证

    我正在使用 MVVM 创建 WPF 应用程序 我有一个文本框 它绑定到我的 ViewModel 类型中的一个属性double默认值为 0 0 如果我现在在文本框中输入文本值 例如 abc 则在失去焦点时 文本框会突出显示 指示值不正确 但是
  • 正则表达式查找 = 之后的字符串

    我对正则表达式真的很陌生 我一直在四处寻找答案 但要么它不起作用 要么我遇到某种错误 所以我会尝试问这个问题 希望有人可以指导我 我有一个看起来像这样的字符串 str 汽车 品牌 萨博 车轮 4 我不知道你是否可以直接获得几个不同的匹配 或
  • Excel 2007 PageSetup.FitToPagesWide 问题

    我一直在尝试使用 C 在 Excel 2007 的 Microsoft Visual Studio 项目中设置 Excel 页面的页面缩放比例 代码看起来像这样 private void Sheet1 Startup object send
  • Java TemporaryFolder getRoot() 异常

    我正在尝试在我的 junit 之一中使用 org junit rules TemporaryFolder 来测试文件 I O 我已经这样初始化它 Code Rule public TemporaryFolder temporaryFolde
  • 如何将行名称转换为第一列?

    我有一个像这样的数据框 df VALUE ABS CALL DETECTION P VALUE 1007 s at 957 729231881542 P 0 00486279317241156 1053 at 320 63270128336
  • Google App Engine Jinja2 和 Markupsafe

    谷歌表示 MarkupSafe 让 jina2 运行得更快here https developers google com appengine docs python tools libraries27 我已将其添加到我的 Yaml 文件中
  • 检查文件是否已经打开

    我需要编写一个自定义批处理文件重命名器 我已经完成了大部分工作 只是我不知道如何检查文件是否已经打开 我只是使用java io File包里有一个canWrite 方法 但这似乎并没有测试该文件是否正在被另一个程序使用 关于如何使这项工作有
  • JavaScript 中什么是好的数学集合实现?

    哪里有一个好的 JavaScript 数学集合实现 它应该包括交集 并集 补集和 奖励点 笛卡尔积的有效实现 不 这不是家庭作业 我有一个 yubikey 它是一个 USB 键盘 可以输入从 16 个键码中选择的序列来输入 128 位一次性