質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

226閲覧

0だけ出力されないのを出力できるようにしたいです

mingo09

総合スコア23

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2022/06/23 16:50

【問題】
今日は name 6 というくじの当選番号の公表日です。

name 6 の購入者は 1 から 100 までの好きな数字を 6 つ選びます。
抽選では同様に 6 つの当選番号が発表され、購入したくじの数字と一致していた数字の数に応じて賞金が当たります。

あなたは、先日 N 枚のくじを購入しました。
プログラマーであるあなたは、N 枚の宝くじそれぞれについて、 当選番号と一致した数字の数について調べるプログラムを書くことにしました。

ここで、くじの購入例を見てみましょう。

上の N = 3 の例では、当選番号と一致した数字は赤で表されており、 上から順に、3 個、1 個、0 個となっています。
なお、例から分かる通り、くじの数字は昇べきの順に並んでいるとは限りません。

条件
すべてのテストケースで以下の条件を満たします。

・1 ≦ N ≦ 100 ・1 ≦ a_i, b_i, c_i, d_i, e_i, f_i ≦ 100

a_i, b_i, c_i, d_i, e_i, f_i (0 ≦ i ≦ n) は全て異なる整数

入力例1

1 2 3 4 5 6 3 1 5 4 2 3 6 9 6 2 7 1 5 32 9 87 33 41 60

出力例1

6 4 0

入力例2

72 2 90 84 57 85 3 36 70 1 72 54 82 36 2 40 12 3 58 25 11 90 57 85 99

出力例2

1 1 3

【自分で書いたコード】

Ruby

1n = gets.split.map(&:to_s) 2lines = [] 3N = gets.to_i 4N.times do |i| 5 lines.push(gets.split) 6end 7lines.each do |a| 8 if n.any? { |i| a.include?(i)} 9 lines0 = a & n 10 puts lines0.size 11 end 12end

【実現したいこと】
入力例1の場合、出力結果が次のようになります。0が出力されません。
入力例2の場合、出力結果は問題ないです。

6 4

どうして0だけ出力されないのか、ご教授いただけたらうれしいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のようにしてください。

ruby

1n = gets.split.map(&:to_s) 2lines = [] 3N = gets.to_i 4N.times do |i| 5 lines.push(gets.split) 6end 7lines.each do |a| 8 lines0 = [] 9 if n.any? { |i| a.include?(i)} 10 lines0 = a & n 11 end 12 puts lines0.size 13end 14 15

よく考えてみたら、以下の方がシンプルですね。

ruby

1n = gets.split.map(&:to_s) 2lines = [] 3N = gets.to_i 4N.times do |i| 5 lines.push(gets.split) 6end 7lines.each do |a| 8 lines0 = a & n 9 puts lines0.size 10end 11

投稿2022/06/24 00:58

編集2022/06/24 01:22
tatsu99

総合スコア5438

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mingo09

2022/06/24 02:57

ご回答ありがとうございます。 一番はじめに書いて頂いたコードについて伺いたいのですが、if文の中でputsを書くか、外でputsを書くかで、どうして0の認識され方が違うのでしょうか。
tatsu99

2022/06/24 04:27

当選番号が購入くじにない場合のケース、すなわち if n.any? { |i| a.include?(i)} が成立しないケースでは、putsが実行されません。 従って、0が表示されません。
mingo09

2022/06/25 09:59

ごかいとうありがとうございます。理解できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問