作者:国邮国旅刘峰 | 来源:互联网 | 2023-01-10 18:43
我有一个数组:
a = ['a', 'b', 'a', 'f']
现在想要得到两种可能的组合,但字母的顺序并不重要.所以结果应该是:
[['a', 'a'],['a', 'b'],['a', 'f'],['b', 'f']]
我试过了
a.product(a)
但这当然返回了所有可能的组合,而不是关于订单不重要并且应该删除双重结果:
[["a", "a"], ["a", "b"], ["a", "a"], ["a", "f"], ["b", "a"], ["b", "b"], ["b", "a"], ["b", "f"], ["a", "a"], ["a", "b"], ["a", "a"], ["a", "f"], ["f", "a"], ["f", "b"], ["f", "a"], ["f", "f"]]
我可以在循环中解决这些问题,但我想知道是否有一些ruby数组/哈希魔法可以帮助我.
1> potashin..:
你可以使用combination
和uniq
使用sort
:
a.combination(2).to_a.uniq(&:sort)
# => [["a", "b"], ["a", "a"], ["a", "f"], ["b", "f"]]
示范