javascript - 将数学公式转换为 node.js

标签 javascript node.js math formula bioinformatics

我想使用此处列出的数学公式:

https://en.wikipedia.org/wiki/Necklace_(combinatorics)#Number_of_bracelets

在 node.js 中计算我可以使用 k 个字符生成 n 长度的唯一环序列的总数,允许重复,并忽略镜像序列

这个公式还需要计算前面的公式,如下所列:

https://en.wikipedia.org/wiki/Necklace_(combinatorics)#Number_of_necklaces

“项链数”公式的结果用作“手镯数”公式中的Nk(n)

编辑

这是最终的解决方案:

const phi = require('number-theory').eulerPhi
const divisors = require('number-theory').divisors

let n = 6,
  k = 5,
  sum = (arr, func) => arr.reduce( (acc, n) => acc + func(n), 0),
  divisorsArray = divisors(n),
  necklaces = (1/n) * sum(divisorsArray, (d) => phi(d) * k ** (n/d))

let bracelets = (n % 2) ?
  (necklaces/2) + 0.5 * (k ** ((n+1)/2)) :
  (necklaces/2) + 0.25 * (k+1) * (k ** (n/2))

最佳答案

这是最终的解决方案,对我来说是正确的

const phi = require('number-theory').eulerPhi
const divisors = require('number-theory').divisors

let n = 6,
    k = 5,
    sum = (arr, func) => arr.reduce( (acc, n) => acc + func(n), 0),
    divisorsArray = divisors(n),
    necklaces = (1/n) * sum(divisorsArray, (d) => phi(d) * k ** (n/d))

let bracelets = (n % 2) ?
    (necklaces/2) + 0.5 * (k ** ((n+1)/2)) :
    (necklaces/2) + 0.25 * (k+1) * (k ** (n/2))

关于javascript - 将数学公式转换为 node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52040161/

相关文章:

javascript - 使用 webpack 从 scss 文件中提取 css

node.js - 在 Google Home 助理上播放 MP3 列表

c - C中的旋转程序

javascript - 使用 CSS 或 SVG 设置与背景颜色相匹配的动画文本颜色?

javascript - 为什么我的 X(时间)轴上没有刻度?

javascript - 由于错误 c004e005,无法完成操作

c# - 二维柏林噪声。为什么我必须采用位移和梯度向量的点积?

javascript - 无法使用 jQuery 自定义内容滚动条将自定义滚动条添加到 iframe?

node.js - 我的 Karma 配置跳过了 Jasmine 单元测试

math - float 学有问题吗?