- Ruby 初心者スレッド Part 54
823 :811[]:2014/05/22(木) 14:38:11.10 ID:r8fE+JcD - 811です
回答して下さった皆さんありがとうございました。 今度は、外部から並べ替え条件を指定した場合のソートについて教えてください。 外部からの指定は、開始位置、桁数、並び順で複数指定可能にしたいです。 外部からの指定が動的に変化するので、 sort条件の部分が動的に変更する必要があります。 そもそもこんな事が出来るのでしょうか? indata = Array.new indata.push("001YAMADA 080A") #番号,名前,点数,クラス indata.push("015TANAKA 065B") indata.push("010YAMAMOTO 090A") indata.push("004UETA 070B") puts indata puts s = "16,1,A,13,3,D" #外部からソートキー指定 =>クラス(昇順)、点数(降順) sortkey_ary = s.split(',').each_slice(3).to_a #カンマで分割し2次元テーブル化 puts "class(A),tensu(D)" puts indata.sort {|a, b| (a[16,1] <=> b[16,1]).nonzero? || (b[13,3] <=> a[13,3]) } puts
| - Ruby 初心者スレッド Part 54
824 :811[]:2014/05/22(木) 14:40:05.83 ID:r8fE+JcD - s = "16,1,D,13,3,A" の場合は、下のようになって欲しい
puts indata.sort {|a, b| (b[16,1] <=> a[16,1]).nonzero? || (a[13,3] <=> b[13,3]) }
| - Ruby 初心者スレッド Part 54
828 :811[]:2014/05/22(木) 17:36:16.90 ID:r8fE+JcD - >>827
まだ理解できてないけど、動きました。 ありがとうございました。 それにしても こんな短いプログラムで書けるとは・・・
|
|