將以下Python方法正確轉換爲Ruby會是什麼?將python方法轉換爲ruby
def uniqueCombinations(self, items, n):
"""
items: list of elements
n: number in a group
"""
if n == 0:
yield []
else:
for i in range(len(items)-n+1):
for cc in uniqueCombinations(items[i+1:],n-1):
yield [items[i]]+cc
我想要做的就是調用
uniqueCombinations(['01', '02', '03'], 2)
,並得到
[['01', '02'], ['01', '03'], ['02', '03']]
這是我到目前爲止所。
def uniq_c(items, n)
if n == 0
yield []
else
puts items.inspect
range_max = items.length-n+1
for i in (0...range_max)
u = uniq_c(items[(i+1)..-1], n-1) { |x| x }
u.each do |cc|
yield [items[i]] + cc
end
end
end
end
,但我得到這個:
in `+': can't convert Fixnum into Array (TypeError)
python版本可以這樣寫:'return itertools.combinations (items,n)' – nosklo 2009-11-16 10:34:27