るびらな!

RubyをLearnする人の勉強記録。(超)弩(級の)素人なので、誰かダメさがわかる人に罵ってもらったりして、少しずつ知見を広げたいと思っています。

ITP1_3_B Print Test Cases

ここも押していただけると嬉しいです #=> にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ Rubyへ にほんブログ村 IT技術ブログ Ruby on Railsへ

さて、昨日はサボってしまいましたが、気を取り直して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