Euler Projesi'nden 41 numaralı problemi denerken, Array.permutation'ın Ruby 1.9 uygulamasında bir hata olduğu görülüyordu. İşte izole sorun kod: dilim ve slice2 içinRuby 1.9 hatası? - 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}
Benim çıktısı:
slice = 4321
9876
9867
9786
9768
9687
...
Ancak slice3 1 ila 4 sırası değiştirilebilir olan hane ile dışarı doğru geliyor. Ayrıca n = 4, bu problemi taşıyan ilk değerdir. N = 3'ü ayarladığımda beklenen çıktıyı alırım. Bu bir hata mı, yoksa bir şeyi yanlış kodlu muyum? Hızlı bir Google araması hiçbir şey yapmadı.
Tatlı, teşekkürler! Japoncam biraz paslı ... beklemek yok, diğer kelime nedir? Oh, değil, varolmayan. Ancak, bu bağlantıdaki koddan aynı sorunun olduğunu görebiliyorum. Farkına vardığım ilk şey olmasaydım, çok fazla özlemedim. Şimdi, hataların nasıl gerçekleştiğini merak ediyorum. Dilimin doğru görünmesine izin verecek iç veri yapılarını düşünemiyorum, ancak permütasyonun yanlış gitmesini sağlayın, ve yine de üç dilim için iyi olun. Herhangi bir yerde İngilizce tartışması var mı? –