INDEX
■はじめに
Rubyの基礎的な問題をたくさん解くことで基本的な考え方やメソッドの使い方を定着させたい。
基本的にはAtCoderというプログラミングコンテスト(競技プログラミング)の過去問を使う。(AtCoderは難易度が分かれており、難易度の低いA問題かB問題を解いていく)
(5/23時点の方針)
メソッドの切り分け方や値の受け渡しを練習するために、コード長の短さについては気にせずに書くことにする。
(2022/10/17時点の方針)
しばらくはB問題を小さい番号の方からやっていく。たまにA問題もやるかも。
■問題
●出典
AtCoder Beginner Contest 070のA問題
https://atcoder.jp/contests/abc070/tasks/abc070_a
●問題文
3 桁の正の整数 N が与えられます。
N が 回文数であるかを判定してください。
回文数とは、10 進法において数字を逆から並べても元の数と同じになる数のことを表します。
●制約
- 100 ≦ N ≦ 999
- N は整数
●入力
入力は以下の形式で標準入力から与えられる。
N
●出力
N が回文数である場合は Yes
、そうでない場合は No
を出力せよ。
■回答
●愚直に書く
ひっくり返しても等しければ Yes
という感じかな?
n = gets.chomp
puts n == n.reverse ? 'Yes' : 'No'
通った!
●メソッド化して書く
メソッドを作る練習のために、あえてそういう書き方をする。
def main
n = read_str
puts is_palindromic?(n)
end
def is_palindromic?(n)
n == n.reverse ? 'Yes' : 'No'
end
def read_str
gets.chomp
end
main
通った!
●リファクタリング/別アプローチ
3桁であることが保証されているから、1文字目と3文字目が等しければ回文になるか。
n = gets.chomp
puts n[0] == n[2] ? 'Yes' : 'No'
通った!
●他の方の回答例
考え方はほぼ一緒だったけど、いくつかメモ。
n[0] == n[2]
でジャッジするのでchomp
は不要。なるほど。n / 100 == n % 10
でもジャッジできる。面白い。
●出てきたメソッド等
公式リファレンスを見る訓練。
-
String#reverse
https://docs.ruby-lang.org/ja/latest/method/String/i/reverse.html -
String#[]
https://docs.ruby-lang.org/ja/latest/method/String/i/=5b=5d.html
■振り返りなど
順当に解けて良かった。