日別アーカイブ: 2022年10月5日

TIPS(Ruby:配列に任意の文字列が含まれているか?2)

目標:なにがしたいか?

配列の要素がすべてユニークな(同じ要素がない)ときの

ある配列の全要素の中に指定された配列の全要素がいくつ含まれているか?

問題

くじ引きゲームを作成しています。このゲームでは1 から50 までの好きな数字を 6 つ選びます。
抽選では同様に 6 つの当選番号が発表され、
購入したくじの数字と一致していた数字の数に応じて賞品が当たります。
N 枚くじを購入したときに、N 枚の宝くじそれぞれについて、
当選番号と一致した数字の数について調べるプログラムを書くことにしました。

与えられる入力値

22 2 10 24 35 25
3
36 7 10 24 34 42
26 2 42 12 35 38
35 11 40 47 45 49

期待する出力

2
2
1

コードと解説

#1行目の入力値を配列にして受け取る
lucky_number = gets.split.map(&:to_i)

#2行目の入力値を受け取る
n = gets.to_i

#N枚くじがあるのでN回繰り返す
n.times do |i|

  #半角スペース刻みの入力値を受け取る
  lottery = gets.split.map(&:to_i)

  #くじのあたり番号と購入したくじの重複した部分の長さを出力する
  puts (lucky_number & lottery).size
end

https://paiza.io/ja/projects/new
↑こちらにコピペして「実行」で確認できます。
↓このような出力結果になっていればOKです。

※配列と配列の重複している部分は積集合&を使うことで検出できる。

積集合