查找从Python到Ruby的集合中所有分区的转换函数

查找从Python到Ruby的集合中所有分区的转换函数,第1张

查找从Python到Ruby的集合中所有分区的转换函数
#!/usr/bin/ruby1.8def partitions(set)  yield [] if set.empty?  (0 ... 2 ** set.size / 2).each do |i|    parts = [[], []]    set.each do |item|      parts[i & 1] << item      i >>= 1    end    partitions(parts[1]) do |b|      result = [parts[0]] + b      result = result.reject do |e|        e.empty?      end      yield result    end  endendpartitions([1, 2, 3, 4]) do |e|  p eend# => [[1, 2, 3, 4]]# => [[2, 3, 4], [1]]# => [[1, 3, 4], [2]]# => [[3, 4], [1, 2]]# => [[3, 4], [2], [1]]# => [[1, 2, 4], [3]]# => [[2, 4], [1, 3]]# => [[2, 4], [3], [1]]# => [[1, 4], [2, 3]]# => [[1, 4], [3], [2]]# => [[4], [1, 2, 3]]# => [[4], [2, 3], [1]]# => [[4], [1, 3], [2]]# => [[4], [3], [1, 2]]# => [[4], [3], [2], [1]]

有什么不同:

  • 守卫打电话给set.empty?而不是(隐式)测试set.nil?
  • 调用分区时忽略.each
  • 使用数组而不是Set
  • 从产生的结果中过滤出空集


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5655127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存