【发布时间】:2017-01-30 04:16:06
【问题描述】:
我是 Ruby 的新手。我需要根据长度生成对象的所有组合。
例如array = [obj1, obj2, obj3]、length = 2,则组合为:
[
[obj1, obj1],
[obj1, obj2],
[obj1, obj3],
# ...
[obj3, obj3]
]
我知道我可以使用repeated_permutation 方法来解决这个问题,但我还需要能够过滤一些排列。例如,要过滤掉两个相同对象一个接一个的排列,即像这样[obj1, obj1]。
【问题讨论】:
-
{ obj1, obj2, obj3 }不是 Ruby 中的有效对象 -
@AndreyDeineko,我知道,我只是用数学符号表示集合。
-
ackacky,
set的定义有两个问题。 @Andrey 提到了一个。第二个是obj1(和其他)要么是具有未知值的变量,要么是未指定的方法。出于问题的目的,您应该将它们设为文字、字符串或符号。你需要写,比如说,require 'set'; set = [:obj1, :obj2, :obj3].to_set #=> #<Set: {:obj1, :obj2, :obj3}>(或Set.new [:obj1, :obj2, :obj3])。你需要编辑来解决这个问题。 -
@CarySwoveland,如果问题不清楚,我很抱歉,但排列生成问题本身被描述为不是红宝石问题。这只是对问题的抽象描述。
-
请不要在发布 cmets 或答案后更改问题,但如果您这样做,请注意您已在编辑中这样做。无声的更改会导致 cmets 和答案不正确或无意义。
标签: ruby algorithm permutation