多くの学びがあったので、備忘録として載せておきます。
以下、問題文の引用
今日はくじの当選番号の公表日です。
購入者は 1 から 100 までの好きな数字を 6 つ選びます。
抽選では同様に 6 つの当選番号が発表され、購入したくじの数字と一致していた数字の数に応じて賞金が当たります。
あなたは、先日 N 枚のくじを購入しました。
プログラマーであるあなたは、N 枚の宝くじそれぞれについて、 当選番号と一致した数字の数について調べるプログラムを書くことにしました。
ここで、くじの購入例を見てみましょう。
上の N = 3 の例では、当選番号と一致した数字は赤で表されており、 上から順に、3 個、1 個、0 個となっています。
なお、例から分かる通り、くじの数字は昇べきの順に並んでいるとは限りません。
解答例
numbers = gets.split(' ').map(&:to_i)
n = gets.to_i
n.times do
ans = 0
a = gets.chomp.split(' ').map(&:to_i)
a.each do |i|
if numbers.include?(i)
ans += 1
end
end
puts ans
end
解き方のポイント
- 2回の繰り返し処理
①宝くじの枚数分 = n回と、
②配列の中身をそれぞれnumbers(当選番号)の数字と照合し、trueの時にだけ+1をカウントする。
##最後に
もっと簡単にcountメソッドとかで処理可能と思ったが、いくら試行錯誤しても出来なかった。
もし別の簡単な方法があれば教えてください!!