AtCoder Beginner ContestのA問題を1分で解くためにRubyを書いているのですが、そのときのTipsが溜まってきたので書いておきます。
入力編
まず入力を受け取るところです。ここを高速で書けるとだいぶ強いです。
a,b,c=gets.split.map &:to_i
1行で与えられた数値A B Cを受け取ります。
単に文字列を受け取りたいなら
s=gets
で構いません。
また、単にgetsとして1行読み込むと、その行を$_という変数で参照できるようになります。こうすると変数に代入する手間が省けます。
gets; p $_.count(1)
出力編
A問題で多いのはYes/Noを出力させる問題、数値を答えさせる問題です。
Yes/Noを答えるときは三項演算子を使うとカンタンです。ただし、他の言語と異なり、?と:の前後にスペースを入れる必要があります(入れなくていいケースもありますが、考える時間がムダなのでとりあえず入れるといいです)。
puts true ? "Yes" : "No" puts true ?"Yes":"No"
Rubyでは文字列リテラルのほかにシンボルというものがあり、こちらでも同様に出力できます。ここでは:の前のスペースは不要です
puts true ? :Yes: :No puts true ?:Yes: :No
数値の出力にはpというメソッドを使えます。putsより文字数が削減できます。ただしpで文字列を表示しようとすると、クォーテーションごと表示されてしまうので使えません。
p 42
便利なメソッド・Tips
"文字列".split文字列を空白で分割する[配列].mapマップ関数。非常によく使う"文字列"[/正規表現/]文字列中で正規表現にマッチする部分を返す"文字列" =~ /正規表現/文字列が正規表現にマッチするか判定する"文字列1".count("文字列2")文字列1のなかで文字列2が出てくる数をカウントする[Enumerable].min数値の配列などで最小値を返す
このあたりはよく使います。