首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby1.9错误?-- Array.permutation

Ruby1.9错误?-- Array.permutation
EN

Stack Overflow用户
提问于 2010-08-20 01:00:02
回答 1查看 297关注 0票数 5

在尝试Euler Project中的问题41时,我遇到了似乎是Array.permutation的Ruby1.9实现中的一个bug。以下是隔离的问题代码:

代码语言:javascript
复制
n = 4
slice = '987654321'.chars.to_a[-n..-1]
puts "slice = #{slice.join}"
slice.permutation(n) {|perm| puts perm.join}

slice2 = slice.dup
puts "slice2 = #{slice2.join}"
slice2.permutation(n) {|perm| puts perm.join}

slice3 = []
(0...n).each {|i| slice3[i] = slice[i]}
puts "slice3 = #{slice3.join}"
slice3.permutation(n) {|perm| puts perm.join}

我对slice和slice2的输出是:

代码语言:javascript
复制
slice = 4321
9876
9867
9786
9768
9687
...

然而,slice3的结果是正确的,数字1到4被置换了。N=4也是第一个有这个问题的值。当我设置n=3时,我得到了预期的输出。这是个bug,还是我写错了什么?在谷歌上快速搜索一下,什么也没找到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-20 01:12:20

它是1.9.2p136和更高版本中固定的known bug

除了更新到最新的Ruby之外,最简单的方法就是确保你的数组不是“共享”的,或者通过构建一个新的数组(比如你的slice3),或者简单地“修改”它,比如slice += []

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3524215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档