0
0

More than 1 year has passed since last update.

【備忘録1】Ruby:複数データの奇数・偶数の判定の考え方

Last updated at Posted at 2022-10-28

備忘録として自分の思考の軌跡を残しておきます。
今回の問題はこちらです。

考え方

1.奇数を数式で表す

まず考えることは「奇数をどのように表すか」ということです。奇数は数値nを2で割った時の余りが1になればよいので、これを数式で表します。

num % 2 == 1

Rubyでは「」を使って余りを算出します。

2.奇数・偶数の判定方法を考える

今回求められている出力結果は「奇数のみを出力すること」だったので、この式を元に、ifを用いた場合分けを考えていきます。
上記の式の結果がtrueになったときに出力するようにしたいので、以下のような式を作成します。

if num % 2 == 1
	puts num
end

3.標準入力でのデータ受け取り

それでは入力されたデータを受け取り、実際に組み立てていきます。
今回は以下のような数値を例とします。1行目に整数の個数Nが、2行目に数値が入力されています。

5
24 38 55 65 79

まず、getsを用いてデータを受け取ります。

a = gets.to_i

これで受け取ったデータがaに代入されました。与えられたデータを数値で受け取る時はgetsの後に「.to_i」を付けます。

次に2行目に与えられた整数を配列で受け取ります。

ary = gets.split.map(&:to_i)

これで2行目のデータが配列としてaryに代入されました。

このコードでは、まずgets.splitで入力文字列を配列に分割し、その配列をさらに**.map(&:to_i)**で整数型に変換しています(じゃいごテック様の記事を参考にしています)。

4.ループ処理の組み立て

ここからは、数値データが代入されているaryを用いて、奇数偶数の判定をしていきます。

全ての数値の判定をするためには繰り返しの処理が必要ですので、for…inを用いてループ処理のコードを組み立てていきます。

for num in ary

end

このような形でループ処理を記述します。aryのデータを取り出してnumに代入し、記述された処理をaryのデータを全て取り出すまで行うというイメージです。

5.完成

この中に冒頭で作成したifを用いたコードを追記します。

for num in ary
	if num % 2 == 1
		puts num
	end
end

これでaryに入力された数値の奇数・偶数を判別し、奇数だったら出力されるようになりました。

参考までに、すべて記述したものを以下に記しておきます。

a = gets.to_i #整数の個数Nの出力
ary = gets.split.map(&:to_i) #配列で受け取り、数値に変換

for num in ary #配列の数値の奇数・偶数判定
	if num % 2 == 1
		puts num
	end
end

もっと良い書き方があると思います。もしありましたらコメントなどでご教授ください。間違いもありましたらあわせてご指摘ください。整数の個数を受け取るやり方などあると思います。

不明点や理解できていなかった点

  • for構文
  • .mapを使ったデータ受け取り

参考資料

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0