■はじめに
Rubyの基礎的な問題をたくさん解くことで基本的な考え方やメソッドの使い方を定着させたい。 基本的にはAtCoderというプログラミングコンテスト(競技プログラミング)の過去問を使う。(AtCoderは難易度が分かれており、難易度の低いA問題かB問題を解いていく)
■問題
●出典
AtCoder Beginner Contest 019のA問題 https://atcoder.jp/contests/abc019/tasks/abc019_1
●問題文
高橋くんは自分の年齢を忘れてしまいました。 ひとまず 3 人の友達を集めることに成功したので、その 3 人が予想する高橋くんの年齢の中央値を、高橋くんの年齢として代用することにしました。 高橋くんに代わって 3 つの整数 a,b,c から中央値を求めるプログラムを書いてください。 3 つの整数の中央値とは、それらを小さい順に並べて中央に位置する整数のことです。
●入力
入力は以下の形式で標準入力から与えられる。
a b c
- 3 つの整数 a,b,c(1≦a,b,c≦100) が空白区切りで与えられる。
●出力
a, b, c の中央値を標準出力に出力せよ。 末尾の改行を忘れないこと。
■回答
●愚直に書く
標準入力を配列で取って、ソートして、2番目の数値を取る、という感じで良さそう。
ary = gets.split(" ").map(&:to_i).sort
puts ary[1]
通った!
●リファクタリング/別アプローチ
変数を使わないようにするくらいかな?
と思ったら、split
は引数無しの場合に空白文字で区切られるとのことなので、.split(" ")
は.split
のが良い。
●他の方の回答例
今回は最上位の方々もほぼ同じ回答だった。
●出てきたメソッド等
公式リファレンスを見る訓練。
■振り返りなど
中央値なので平均を出すとかも不要でサッとできて良かった。