【问题标题】:Get all the possible combination of a string generated from ASCII character between two numbers获取两个数字之间由 ASCII 字符生成的字符串的所有可能组合
【发布时间】:2019-04-24 06:20:13
【问题描述】:

我需要一个简单的 javascript 函数,它需要 3 个输入

1- 起始 ASCII 值
2- 结束 ASCII 值
3- 字符串长度

该函数将从起始值循环到结束值,直到确定长度。

例如,

开始 - 65
结束 - 67
长度- 2

我想要 [ 65, 66, 67 ] 的所有 ASCII 组合(长度为 2),即 ["A", "B", "C"]

我希望输出为
AA
AB
AC
BB
BA
BC
@987654329 @
CB
CC

【问题讨论】:

标签: javascript algorithm combinations permutation


【解决方案1】:

要生成所有可能的组合,您可以使用递归生成器:

  function* combine(start, end, depth, previous = []) {
    if(depth <= 0) {
      yield previous;
      return;
    }

    for(let i = start; i <= end; i++)
      yield* combine(start, end, depth - 1, [...previous, i]);
 }

【讨论】:

  • 可爱的yield。看到有人可以实际使用这些东西总是很酷:D
  • 谢谢 :) 我真的很喜欢这种简单性:无需担心将结果传递给调用者...
  • @JonasWilms 我没有测试它,但我认为通过仔细查看代码,这最终会陷入无限循环。事实上,每个递归组合调用都会将65 添加到数组中,最终导致 RangeError。我认为这里的笛卡尔积足以解决问题。
  • 类似这样的东西:jsfiddle.net/xp3owc9t。我不太擅长生成器,但我认为这应该可行。
  • @briosheje 实际上是一个简化的笛卡尔积。是的,我错过了return...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
相关资源
最近更新 更多