Ошибка Ruby 1.9? - Array.permutation

Испытывая проблему 41 из проекта Эйлера, я наткнулся на ошибку, которая представляется в реализации Ruby 1.9 Array.permutation. Вот код проблемы, изолированный:

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 следующий:

slice = 4321
9876
9867
9786
9768
9687
...

Однако, slice3 выходит правильно, с перестановкой цифр от 1 до 4. Также n = 4 является первым значением, которое имеет эту проблему. Когда я устанавливаю n = 3, я получаю ожидаемый результат. Это ошибка или я что-то неправильно кодирую? Быстрый поиск в Google ничего не дал.

5
задан Greg Charles 19 August 2010 в 17:00
поделиться