在尝试来自Euler Project的问题41时,我遇到了似乎是Array.permutation的Ruby 1.9实现中的一个错误.这是隔离的问题代码:
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}
Run Code Online (Sandbox Code Playgroud)
我对slice和slice2的输出是:
slice = 4321
9876
9867
9786
9768
9687
...
Run Code Online (Sandbox Code Playgroud)
但是,slice3出现正确,数字1到4被置换.此外,n = 4是第一个出现此问题的值.当我设置n = 3时,我得到预期的输出.这是一个错误,还是我错误的编码?快速谷歌搜索没有发现任何东西.
| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |