#sort
Rubyの勉強
Hashの各要素のソートの実験。ただsortを使用すればkeyによるソートが行われる? 値(val)やkey/valの組合せで評価したい場合は#sort_byを使用してブロックの中で評価の定義を記述する。ソート順は評価結果のオブジェクトの演算子<=>の定義による?
h = {"a" => 3, "b" => 1, "c" =>2, "d" => 0} # key文字列を使用してのソート p h.sort # => [["a", 3], ["b", 1], ["c", 2], ["d", 0]] p h.sort.reverse # => [["d", 0], ["c", 2], ["b", 1], ["a", 3]] p h.sort_by{|key| -key[0].unpack("c")[0]} # 1文字目のコードの逆順 # => [["d", 0], ["c", 2], ["b", 1], ["a", 3]] # valの値を使用してのソート p h.sort_by{|key,val| val} # => [["d", 0], ["b", 1], ["c", 2], ["a", 3]] p h.sort_by{|key,val| -val} # => [["a", 3], ["c", 2], ["b", 1], ["d", 0]] p h.sort_by{|key,val| (val - 1.2)**2 } # valが1.2に近い順 # => [["b", 1], ["c", 2], ["d", 0], ["a", 3]] # ランダムに並べ替え p h.sort_by{rand}