From: "142QN4969@..." Date: 2007-08-07T03:34:42+09:00 Subject: [ruby-list:43809] 配列についての質問 小原です。御世話になっています。 配列の要素の順番を、ごちゃごちゃにするメソッドが 欲しくって次の code を書きました。(仮に unsort と 言う名前にした) ####### ここから ################################## #!/usr/bin/ruby class Array def unsort x=self br=[] while x.size>0 i=rand(x.size) br.push(x[i]) x.delete_at(i) end return br end end # ar=%w(1 2 3 4 5) arr=[] print "\n Original ar : ";p ar ar.size.times do |i| arr[i]=ar[i] end br=ar.unsort print "\n after br=ar.unsort\n" print "ar: ";p ar #print "ar0: ";p ar0 print "arr: ";p arr print "br: ";p br ####### ここまで ############################### ####### 実行画面 ここから####################### [ohr@localhost ruby]$ ./x.rb Original ar : ["1", "2", "3", "4", "5"] after br=ar.unsort ar: [] arr: ["1", "2", "3", "4", "5"] br: ["4", "2", "5", "1", "3"] ####### 実行画面 ここから####################### br に意図したものが得られたのですが、ar が空の 配列になってしまいました。深刻な問題ではないの ですが(もとの配列が欲しいときは、arr に保存可能) スマートでないように思えます。もとの配列を破壊 しないで、br を生成する code を考えたのですが、 わたしには、良い考えが浮かびません。そのような code は難しいのでしょうか? 以上、よろしくご教授下さい。