3日前に書いたコードですが。
max = 300 def makerandarray(max) a = Array.new(max){|i| i} for i in 0 .. a.size-1 do a[i] = "#{a[i]},#{rand}" end a.sort!{|p,q| p.split(',')[1] <=> q.split(',')[1]} for i in 0 .. a.size-1 do k = a[i].split(',') a[i] = k[0].to_i end return a end def printarray(a) for i in 0 .. a.size-1 do p a[i]+1 end end arr = makerandarray(max) printarray(arr)
max = 300はネタです。w
配列の各要素にランダムな重みを割り振ってそれをsortする方法でやってみた。
でそれをちょっと応用すればこんなこともできることに気づいた。
word = [["西",1,0],["線",2,0],["9",3,0],["条",4,0], ["旭",5,0],["山",6,0],["公",7,0],["園",8,0],["通",9,0]] word.each do |line| line[2] = rand end q = word.sort{|a,b| a[2]<=>b[2]} qword = "" q.each do |line| qword += line[0] end printf("%s?\n",qword)
○-T○IP氏に捧ぐ。w
追記
>nyaxtのひと
1行…!orz
さらに追記
西9条山公園線旭通 -> ? の家積慶あに善余り -> ? rrrCfoaue -> ? 術祭教火芸L祖P花 -> ? し匹鳴山一動鼠大て -> ? バリズオ・ンドル -> ?
こんなのができちゃったよ!後半思いつかなくてgdgdになってるけど!