首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ruby 1.9的bug? - Array.permutation

Ruby 1.9的bug - Array.permutation

在Ruby 1.9版本中,Array.permutation方法存在一个已知的bug。该方法用于生成数组的所有排列组合。然而,在某些情况下,该方法会返回一个错误的结果。

具体来说,当数组中存在重复元素时,Array.permutation方法会导致结果中出现重复的排列。这是由于在1.9版本中,该方法没有正确处理重复元素的情况。

为了解决这个bug,可以考虑升级到Ruby的更高版本,如2.0以上的版本。在较新的版本中,该bug已经修复。

如果需要在Ruby 1.9版本中使用Array.permutation方法,并且避免重复排列的问题,可以自行编写代码来处理。一种解决方案是使用Set数据结构来存储唯一的排列结果,然后将其转换为数组返回。

以下是一个示例代码,用于在Ruby 1.9版本中修复Array.permutation方法的bug:

代码语言:ruby
复制
require 'set'

def unique_permutations(array)
  set = Set.new
  array.permutation.each do |perm|
    set << perm
  end
  set.to_a
end

# 示例用法
array = [1, 2, 2]
result = unique_permutations(array)
puts result.inspect

在上述示例中,我们使用Set数据结构来存储唯一的排列结果,避免了重复排列的问题。

对于Ruby 1.9版本的用户,推荐使用腾讯云的云服务器CVM来部署Ruby应用。腾讯云的云服务器提供稳定可靠的计算资源,支持多种操作系统和应用部署方式。您可以通过以下链接了解更多关于腾讯云云服务器的信息:腾讯云云服务器CVM

请注意,以上答案仅针对Ruby 1.9版本中Array.permutation方法的bug进行了解释和解决方案提供。对于其他云计算、IT互联网领域的问题和名词,您可以提供具体的问题和要求,我将尽力为您提供完善且全面的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Logstash2.3.4趟坑之集成Redis哨兵模式

    >, :backtrace=>["/home/search/logstash-2.3.4/vendor/jruby/lib/ruby/1.9/uri/generic.rb:214:in `initialize...'" Logstash自带的ruby是1.9的版本,自带集成的redis插件也是最新的redis-rb3.3.1 Logstash里面默认自带了redis插件,也就是redis-rb3.3.1 如果没带可以进入...masterName在ruby1.9中必须不能带下划线,否则会报下面的异常: 错误的用法 :url => 'redis://redis_master_10214' <URI::InvalidURIError...472 http://stackoverflow.com/questions/2180465/can-domain-name-subdomains-have-an-underscore-in-it 目前在ruby1.9...的版本中发现此bug,使用最新的版本ruby2.3.0则没有此问题,说明在高版本的ruby中 已经修复了此问题,但是logstash最新的版本绑定的jruby版本是1.9的ruby,所以还存在此问题,只能在使用时避免

    97380

    Python 和 Ruby 的对比

    ruby还没有python的“自省”的能力,没有从程序文件中生成文档的能力。  ruby没有国际化的支持。国际化支持在ruby的计划中。这是因为ruby的历史比python要短造成的。 ...Ruby的语法非常灵活,Matz设计ruby的出发点也是为了coding for fun,因此可以用ruby玩出来很多花样,运用足够的技巧,可以用Ruby写出来逼近自然语言的DSL,对于程序员来说,玩ruby...2、Python的解析器实现更成熟,第三方库质量高   Ruby1.9解析器尽管已经有了很大的性能提升和很多新的功能,但是从源代码实现的角度来说,基本上是通过在Ruby1.8源代码上打patch来增加功能的...从源代码的结构来说,Ruby的实现太古老了,Ruby扩展起来比较困难,只能不断打patch。这也是为什么现在Ruby社区涌现出来那么多新的Ruby解析器实现的原因。...正是由于Ruby解析器和Ruby类库的制约,Ruby的应用主要局限在Web开发领域,目前Ruby的应用还无法延伸到web开发领域以外的很多地方。

    1.4K20

    A quick introduction to innodb_ruby (2.对innodb_ruby的简单介绍)

    本文基于2014年3月innodb_ruby的0.8.8版本。 在前文《学习innoDB核心之旅》中,我在innodb_ruby的项目中引入了一个新的库和命令行工具。现在我来展示一下他的一些功能。...我不会尝试解释所有公开的innoDB结构,因为那会让演示偏离我的本意。我们稍后会再来介绍这些结构。 安装 innodb_ruby 如果你熟悉ruby和gems或者你恰好有一个良好配置的ruby环境。...我会定期讲innodb_ruby gems推送到RubyGems中,所以你只需要执行: gem install innodb_ruby 如果这还不起作用,你肯能需要检查下RubyGems手册,重试你的安装工作...用一点Ruby创建并填充一个非常简单的表。 #!...解读行数据 为了在检查真正的表的时候真正有用,需要为innodb_ruby提供一些理解表模式的方法。

    86410

    JDK1.9-List的子类

    元素增删慢,查找快,由于日常开发中使用最多的功能为 查询数据、遍历数据,所以 ArrayList 是最常用的集合。...但是正常来说ArrayList的增加是直接加在最后一个的,所以其实性能也不能算是慢的,删除的时候如果根据索引进行删除才有可能会变慢一些,但是如果是根据索引进行倒序删除,那其实性能也不会有太大的区别的 3.2...方便元素添加、删除的集合。 LinkedList是一个双向链表,那么双向链表是什么样子的呢,我们用个图了解下 ?...实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。...LinkedList是List的子类,List中的方法LinkedList都是可以使用,这里就不做详细介绍,我们只需要了解LinkedList 的特有方法即可。

    31130

    JDK1.9-异常的处理

    异常的处理 Java异常处理的五个关键字:try、catch、finally、throw、throws 2.1 抛出异常throw 在编写程序时,我们必须要考虑程序出现问题的情况。...那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者。...在方法中使用try-catch的语句块来处理异常。 try-catch的方式就是捕获异常。 捕获异常:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理。...包含了异常的类型,异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace。...而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。 什么时候的代码必须最终执行?

    45230

    java与ruby的直观比较

    以前花过一段时间学习ruby,还顺便写了个股票爬虫,搭了数据展示网站,这次回顾一下以前的知识点,将ruby与java作个简单而直观的比较,这样有助于更深入地理解java。...实现同样一个输出功能,ruby的代码行数小于java,也许,正是出于简洁性的考虑,java8出了lambda表达式。...void repair(Car car){ } Ruby: def repair(c) end 5、ruby中的Aop与Ioc AOP和依赖注入在ruby中是小菜一碟,但在java程序员而言...拦截器 目的:不修改代码,动态改变已定义类的行为,它支持AOP所需的大多数功能。 (Ruby 2.0)能够在之前、之后和包装与Ruby方法钩连。...,主要是依赖注入,java需要 Ioc service Provider专门管理,方便自动化测试 在ruby中,依赖注入是不必要的,它很容易修改运行中类的定义,你不需要在应用中添加新一层的复杂性,就可以注入新的行为

    1.1K70

    java与ruby的直观比较

    以前花过一段时间学习ruby,还顺便写了个股票爬虫,搭了数据展示网站,这次回顾一下以前的知识点,将ruby与java作个简单而直观的比较,这样有助于更深入地理解java。...实现同样一个输出功能,ruby的代码行数小于java,也许,正是出于简洁性的考虑,java8出了lambda表达式。...: 共1行 2、ruby的代码块 本质:高阶函数的一种特殊形式,类似于java的匿名内部类 特点:1、使用时定义 2、可引用外部局部变量(闭包) java:使用偏重的匿名内部类,不通用 Execute(...: def repair(c) end 5、ruby中的Aop与Ioc AOP和依赖注入在ruby中是小菜一碟,但在java程序员而言,却要学习新的编程模型,处理XML,引进复杂的语法。...拦截器 目的:不修改代码,动态改变已定义类的行为,它支持AOP所需的大多数功能。 (Ruby 2.0)能够在之前、之后和包装与Ruby方法钩连。

    1.5K50

    JDK1.9-数组的常见操作

    在开发中,数组的越界异常是不能出现的,一 旦出现了,就必须要修改我们编写的代码。 3.2 数组空指针异常 观察一下代码,运行后会出现什么结果。...在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修 改我们编写的代码。...空指针异常在内存图中的表现 3.3 数组遍历【重点】 数组遍历: 就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。...实现思路: 定义变量,保存数组0索引上的元素 遍历数组, 获取出数组中的每个元素 将遍历到的元素和保存数组0索引上值的变量进行比较 如果数组元素的值大于了变量的值,变量记录住新的值 数组循环遍历结束...,变量保存的就是数组中的最大值 3.5 数组反转 数组的反转: 数组中的元素颠倒顺序,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1 实现思想:数组最远端的元素互换位置。

    35130

    辨析 Ruby 中的 Method 与 Proc

    但是,Ruby 中的函数并没有其他动态语言中那么简单,它提供了 Method 与 Proc 两个类来表示函数的概念,对于这两个类的区别无论是官方文档还是 Stackoverflow 上的问题,解释的都非常模糊...在其他语言函数很习以为常的用法在 Ruby 中却行不通,就其原因还是不清楚这两个类的区别,希望这篇文章能够帮助大家理解好 Ruby 中的“函数”概念,做到深入浅出,与其他函数式语言融会贯通。...但有一点需要注意,block 仅仅是 Ruby 提供的一语法糖衣,并不把其赋值给某一变量。如果自定义函数需要调用传入的block,需要采用yield方式。...map(myinc, [4,5,6]) # => [5, 6, 7] Ruby 中与其对应的是过程(Proc),与上面功能等价的 Ruby 代码为: myinc = Proc.new {|num...,与其他动态语言的函数等价 Method 专为面向对象设计,消息传递的第一个参数 弄清 Method 与 Proc 的区别后,不得不欣赏 Ruby 语言设计的巧妙,兼具函数式与面向对象的精髓。

    93320

    Bundler与Gemfile的最佳实践 | Ruby

    Only specify top-level dependencies 一般gem都会在spec里写明其所依赖的gems有哪些,并且bundler在安装的时候自动的分析他们之间的关系,所以大可不必去关心其中的底层依赖...end # Bad gem 'web-console', group: :development gem 'spring', group: :development Resist the urge to Ruby...Gemfile有自己的DSL,所以不要在Gemfile里炫技使用Ruby语法,这里的炫技并不能帮你提升什么性能,写的通俗易懂才是大众喜闻乐见的。...不过天朝环境下这个用法很好用: if ENV['USE_OFFICE_GEM_SOURCE'] source 'https://rubygems.org' else source 'https://gems.ruby-china.org...gem的主分支,今儿会错过很多必要的更新和一些新特性 相比语义化的版本而言,git提供的hash值让人很难搞懂版本之间的关系 更好的解决方法是给原gem提issue、patch,这样可以营造一个更好的开源环境

    95920

    Ruby 和 Java 的基础语法比较

    ,你将获得和了解: Ruby 语言的基本语法和使用方式 Java 语言的基本语法和使用方式 从老司机的角度分析和讲解 Ruby 和 Java 语言语法的特点和区别 它们的各自适合并且擅长的应用场景 网上单独介绍...Ruby ,Java 的文章应该很多,但是对比两种编程语言的基本语法使用的文章应该不多见,写这篇文章的目的主要是对自己近期几个月学习 Ruby 做总结和回顾,我之前最熟悉的编程语言是 Java,我个人认为合格的程序员应该掌握多门语言...都是使用 Ruby 作为开发语言,Ruby 是一门很灵活也很优雅的动态语言,解释运行,有兴趣了解的同学可以点开 链接 查看维基百科的词条,Ruby 语法精炼,做相同的事情代码行数通常会比 Java 要短的多...通过一个简单的 Hello World 程序你就可以发现两者的明显区别: Ruby 的执行是从上到下顺序执行,main 方法则是 Java 程序的唯一入口 Ruby 不必用 ; 号结束符,不必使用 {}...Ruby 条件判断 if/unless 放在代码后面,程序看上去可以更加紧凑和简洁 循环 Ruby 的循环结构语句比较丰富,相比 Java 只有 for,while 两种循环方式来说,Ruby 中的可用的循环方法有

    2.2K20

    解Bug之路-Druid的Bug 原

    解Bug之路-Druid的Bug 笔者很热衷于解决Bug,同时比较擅长(网络/协议)部分,所以经常被唤去解决一些网络IO方面的Bug。...现在就挑一个案例出来,写出分析思路,以飨读者,希望读者在以后的工作中能够少踩点坑。 前言 此Bug是Druid低版本的Bug,此Bug至少在1.0.12版本就已经修复。...Druid的Bug现场 在紧张的新项目开发的日子里,突然收到线上某系统的大量报警,对应系统的人员发现此系统在某一台机器上dump了大量的error日志。...Sharding Proxy的Bug 于是此问题又萦绕在笔者心头,在又一番不下于上述过程的努力之后,发现一个月之前上线的新版本的Sharding Proxy的内存泄露Bug导致频繁GC(并定位内存泄露点...终于这次的连环Bug算是填完了。 总结 追查Bug,日志和源码是最重要的两个部分。最源头的日志信息量最大,同时要对任何不同寻常的现象都加以分析并推测,最后结合源码,才能最终找出Bug。

    1.1K50

    【改BUG】项目遇到的奇葩bug

    问题 今天,我的下级代理联系我说,我们的平台,应用服务批量导入后,用户密码含有“0”的都不显示,例如密码是“07121239”但是平台只显示“7121239”,今天做了下排查,本文仅记录一下今天排查的经历...排查前端 在前端加了个调试后密码依然是含“0”的,那就说明问题应该在后端 排查后端 由于项目是原生php写的,部分代码,就直接通过[说明]跳过,更改之前的部分代码 代码返回是一个json,但是数据返回的password是“123456”,于是我重新打印了sql查询的语句,发现数据是“0123456”,说明应该不是sql查询问题,往下排查除了“json_encode...102.55156461759","latitude":"24.359801443673","vip_data":"2023-07-10 16:22:03","vip_info":"false"}} bug...> 看下修改后的结果: password显示“0123456” {"code":100,"msg":"\u67e5\u8be2\u6210\u529f","data":{"id":"45","phone

    19710

    ruby学习笔记(6)-Array的使用

    ruby的数组基本使用,跟c#中的数组比起来,最不习惯的区别在于允许负索引(跟javascript到有几分相似) arr=[3,4,5,6,7,8,9] puts arr[0] # 3 puts arr.first...print arr[-3,2] ,"\n" #倒数第三个元素开始,连续取2个元素,即7,8 复杂一点的应用如下,这里要特意指出的是,ruby中的数组天生就已经实现了堆栈与队列,这一点想得很周到....#来自"Ruby语言入门教程v1.0"中的E8.1-3.rb arr=[4,5,6] print arr.join(", "),"\n" # 4, 5, 6 arr[4] = "m" #将第...将元素f,2加入到数组最后,类似前面的push用法 print arr.join(", "),"\n" # 7, h, d, m, f, 2 arr.pop #弹出一个元素,与前面的push结合起来,ruby...\n" #h, d, m, f arr.clear #清空元素 print arr.join(", "),"\n" 最后讲一个要注意的地方:array的each与delete一起用时,有时候会出现意想不到的效果

    89950

    innodb_ruby 研究innodb 的存储结构

    下载工具 https://github.com/jeremycole/innodb_ruby 导入测试数据 https://github.com/xiazemin/-innodb_ruby_study...FSP_HDR类型页的file space header部分存储了整个表空间的一些属性和5个链表基节点。 前3个链表基节点是表空间中碎片区对应的XDES Entry结构构成的3个链表的基节点。...后2个链表基节点是表空间中段(Segment)对应的INODE结构所在的INODE页构成的2个链表的基节点。 链表基节点的大小为16字节。...存储本组所有的区的所有页面INSERT BUFFER的信息。 3、INODE类型页 表空间的第一个组的第一个区的第3页是FILE_PAGE_INODE类型页,简称INODE类型页。...add_time: "184524556-52-49 32:71:04" 参考 https://xiazemin.github.io/MyBlog/storage/2021/03/14/innodb_ruby.html

    40310
    领券