小编tom*_*tom的帖子

翻译函数,用于查找从Python到Ruby的集合的所有分区

我有以下python函数以递归方式查找集合的所有分区:

def partitions(set_):
    if not set_:
        yield []
        return
    for i in xrange(2**len(set_)/2):
        parts = [set(), set()]
        for item in set_:
            parts[i&1].add(item)
            i >>= 1
        for b in partitions(parts[1]):
            yield [parts[0]]+b

for p in partitions(["a", "b", "c", "d"]):
print(p)
Run Code Online (Sandbox Code Playgroud)

有人可以帮我翻译成红宝石吗?这是我到目前为止:

def partitions(set)
  if not set
    yield []
    return
  end
  (0...2**set.size/2).each { |i|
    parts = [Set.new, Set.new]
    set.each { |item|
      parts[i&1] << item
      i >>= 1
    }
    partitions(parts[1]).each { |b|
      yield [parts[0]] << b
    }
  }
end

p partitions([1, 2, 3, …
Run Code Online (Sandbox Code Playgroud)

ruby python

6
推荐指数
1
解决办法
1321
查看次数

标签 统计

python ×1

ruby ×1