ITP1_3_B Print Test Cases
さて、昨日はサボってしまいましたが、気を取り直してAOJ第9日目。
今日の問題はこちら ->
テストケースの出力 | プログラミング入門 | Aizu Online Judge
問題
テストケースの出力
オンラインジャッジでは、提出されたプログラムが複数の入力データそれぞれに対して正しい出力を行っているかを判定するために、1つの入力データファイルに複数のデータセットが含まれているものがあります。この問題は、そのようなデータセットを処理するための練習問題です。
1つの整数 x を読み込み、それをそのまま出力するプログラムを作成して下さい。
ただし、この問題は以下に示すようにいくつかのデータセットが与えられることに注意して下さい。
Input
入力は複数のデータセットから構成されています。各データセットは1つの整数 x を含む1行から構成されています。
x が 0 のとき入力の終わりを示し、このデータセットに対する出力を行ってはいけません。
Output
各データセットごとに、以下の形式で x を出力して下さい:
Case i: x
ここで、i は1から始まるデータセットの番号を示します。Caseと番号 iの間に1つの空白を入れて下さい。また、:(コロン)と整数 x の間に1つの空白を入れて下さい。サンプル入出力を参考にして下さい。
自分のコード
nums = Array.new nums[0] = 0 i = 1 loop { nums[i] = gets.to_i if nums[i] == 0 break end i += 1 } i -= 1 cnt = 1 i.times do print "Case ",cnt,": ",nums[cnt],"\n" cnt += 1 end
何となく、入力されたデータをとりあえず配列に全部放り込んで、
データが終わったところで出力したい気分になってしまったので、
そんな感じをメインに考えて書いてみましたが、結果動作が最遅という…
やっぱり、そんな面倒なことはしなくても良かったよなぁ、とちょっと反省。
なんか、出力形式のところに
各データセットごとに、以下の形式で x を出力して下さい:
って書いてあったのが引っかかっちゃったんだよね。うん。
他の人のコード
動作が最速だった人
cnt = 0 while true input = STDIN.gets cnt += 1 break if (input.to_i == 0) puts "Case "+cnt.to_s+": "+input end
あ、やっぱりデータセットを全部取り込んでから、なんて考える必要ないですよね。
一番短いコードの人
puts"Case #$.: #$_"while"0 "!=gets
も、もはや何が書いてあるのかよくわからない…
だれか解説してくださいorz