ファイル内の重複行削除(後優先)
Posted feedbacks - Ruby
仕様をそのまま書いた感じです
1 2 3 4 5 6 7 8 9 10 | a = []
while line = ARGF.gets
a.delete(line)
a << line
end
a.each{|line|
print line
}
|
上のは見た目は良いのですが 実際走らせるとa.deleteの部分がやばいことになるので 効率を若干考慮したバージョン。
1 2 3 4 5 6 7 8 9 10 11 | h = {}
while line = ARGF.gets
h[line] = ARGF.lineno
end
h.sort_by{|line, lineno|
lineno
}.each{|line, lineno|
print line
}
|
sortは不要かと。
1 2 3 4 5 6 | h = {}
while line = ARGF.gets
print line if not h[line]
h[line] = 0
end
|





raynstard
#3422()
Rating1/1=1.00
入力されたテキストデータから重複する行をとりのぞいて、その結果を標準出力へ出力するプログラムを作成してください。
重複行の排除については、以下の仕様を満たしてください。
#4.はおまけですがある/なしで作りが変わってくると思われるので追加しました。
この問題はraynstardさんにご投稿いただきました。ご協力ありがとうございます。 ところで、素朴な実装のしかたをするとメモリ容量の数倍のサイズのすべての行が異なっているファイルを読ませたときに大変なことが起こりそうな気がしますが、そういうシビアなお題設定ではないので素朴に解いてしまって構いません。シビアなのは続編にしたいと思います。
[ reply ]