3

私はルビーにとても慣れていません。ファイル .dat を開いて、2 番目の列で降順に並べ替えようとしています。これまでのところ、ファイルを開いてすべてを読むことができました。提案をお願いします。どうもありがとう。

ファイル:

 1 88 59 74 53.8 0.00 280 9.6 270 17 1.6 93 23 1004.5
 2 79 63 71 46.5 0.00 330 8.7 340 23 3.3 70 28 1004.5
 3 77 55 66 39.6 0.00 350 5.0 350 9 2.8 59 24 1016.8
 4 77 59 68 51.1 0.00 110 9.1 130 12 8.6 62 40 1021.1
4

1 に答える 1

4
output_lines = open("in.dat").lines.sort_by { |line| -line.split[1].to_i }
open("out.dat", "w") { |f| f.write(output_lines.join) }

これは非常に基本的な実装であり、大きな入力データで使用するには、少し調整する必要があります ( の代わりに正規表現を使用するString#split、ファイルに書き込むためにまったく新しい文字列を作成しない、など)。

于 2012-09-05T06:54:19.870 に答える