LoginSignup
0
0

More than 3 years have passed since last update.

当選番号の照合プログラム

Last updated at Posted at 2021-03-30

多くの学びがあったので、備忘録として載せておきます。

以下、問題文の引用

今日はくじの当選番号の公表日です。
購入者は 1 から 100 までの好きな数字を 6 つ選びます。
抽選では同様に 6 つの当選番号が発表され、購入したくじの数字と一致していた数字の数に応じて賞金が当たります。
あなたは、先日 N 枚のくじを購入しました。
プログラマーであるあなたは、N 枚の宝くじそれぞれについて、 当選番号と一致した数字の数について調べるプログラムを書くことにしました。
ここで、くじの購入例を見てみましょう。

スクリーンショット 2021-03-30 22.49.36.png

上の 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メソッドとかで処理可能と思ったが、いくら試行錯誤しても出来なかった。
もし別の簡単な方法があれば教えてください!!

0
0
0

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