在Ramda中获得元素数组组合的最佳方法?

问题描述 投票:-1回答:5

实现带有三个参数的函数的最佳方法是什么?>

  • 最小组合长度
  • 最大组合长度
  • 值数组
  • 并返回长度为l(arg1 <= l <= arg2)的所有组合。 E.g

getComb (2, 2, [1, 2, 3]) === [[1,2], [2,3], [3,1]]
getComb (0, 3, [1, 2, 3]) === [[],[1],[2],[3],[1,2],[2,3],[3,1],[1,2,3]]

([===在这里被定义为深度相等,不考虑顺序(数组的两个深度几乎都设置相等)。另外,应忽略重复的值(例如,对于所有a,getComb(a, b, [x,x,y]) === getComb(a, b, [x,y]),b,x,y)

然后可以获取所有组合的fn:

getAllComb = arr => getComb (0, arr.length, arr) 

谢谢!

实现函数的最佳方法是采用三个参数的最小组合长度的最大组合值数组的最大长度并返回长度为l的所有组合(arg1&...

javascript functional-programming ramda.js
5个回答
1
投票

实现getComb的一种方法是:

[1,2,3].reduce( (acc, v, i, original) =>
    acc.concat(original.slice(i+1).map( w => [w, v] )),
[]);

1
投票

这是另一种递归解决方案,其结构与Nina Scholz的回答略有不同。它具有从列表中精确选择n元素,然后在主函数中使用该函数的功能,该函数针对从minmax的每个值进行调用:


0
投票

您可以采用递归方法。


0
投票

好吧,我有部分解决方案(针对a = 1, b = arr.length:]


0
投票

这是我引以为傲的解决方案:)有很多东西,但大多数都是样板

© www.soinside.com 2019 - 2024. All rights reserved.