栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

查找从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
  • 从产生的结果中过滤出空集


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653008.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号