【发布时间】:2016-08-19 17:42:02
【问题描述】:
给定一个数组,我想生成一个新数组,其中包含依次向原始数组的每个项目添加 +1 或 -1 的结果。这很难用语言来解释,所以请看下面的例子。
例如,给定数组
ary = [1,2]
每次从一项中添加或减去1 时的结果数组应为:
[[1+1, 2], [1-1, 2], [1, 2+1], [1, 2-1]]
同样,当一次从两个项目中添加或减去 1 时,结果数组将是:
[[1+1, 2+1], [1+1, 2-1], [1-1, 2-1], [1-1, 2+1]]
基本上所有可能的结果都带有+1 and -1 并获得结果数组。几乎是一次获取1 或一次获取2 的项目的组合,依此类推。
我最初认为排列可以解决这个问题,但它只提供样本:[['+', '-'], ['-', '+']],这很明显。
我不确定这是否可以通过应用一个公式从概率中获取所有样本空间来解决。
我应该以编程方式做什么才能达到同样的效果?
P.S.:数组的长度可以变化。
【问题讨论】:
-
你看过
repeated_permutation方法吗? -
@sagarpandya82 是的,但这似乎只解决了部分问题,但感谢您的建议。
-
我已经编辑了你的问题,试图让它更清楚。这是一个很难用语言表达的问题,不是吗?我对这个问题做了很多修改;我希望我已经改进了它。如果我没有,请回滚我的编辑并接受我的道歉。
-
@WayneConrad 感谢您的编辑。实际上,我想让它更通用,因为一次将“n”项结合起来,而在两者之间感到困惑。我应该为没能正确表达而道歉。
标签: ruby math permutation