【发布时间】:2013-12-01 14:02:15
【问题描述】:
我需要帮助来解决这个 ruby 数组问题。
获取数组的所有子集。唯一的一套。没有任何数量的重复。 num_subset([1,2,3]) ==> 结果应该是 [[], ["1"], ["1", "2"], ["1", "2", "3"], ["1", "3"], ["2"], ["2", "3"], ["3"]]
def num_subset(arr)
holder =[]
order_subset = [[]]
(arr.length).times do |m|
arr.map do |n|
holder += [n]
order_subset << holder
end
holder =[] # resets holder
arr.shift # takes the first element out
end
order_subset
end
我的结果 ==> [[], ["1"], ["1", "2"], ["1", "2", "3"], ["2"], ["2", "3"], ["3"]。我的问题是我缺少一个结果["1", "3"]
需要一些帮助来指引我正确的方向。已经花了几个小时。不要使用#combination 快捷方式。我需要手动解决这个问题。
【问题讨论】:
-
“数组的子集”没有意义。 “集合的子集”或“数组的子数组”是有意义的。换句话说,是否允许
[1, 1, 2, 3]作为参数?如果是,那是否等同于[1, 2, 3]?如果不是,那么预期的结果是什么? -
@sawa,它只是一个独特的集合。没有重复。
标签: ruby arrays string algorithm numbers