🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

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

Ruby

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

Q&A

2回答

971閲覧

条件に合致しない場合(メソッドがnil を返すような場合)に"none"を表示させたい。

sunny_garden

総合スコア6

Ruby on Rails 5

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

Ruby

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

1グッド

1クリップ

投稿2019/12/11 04:54

ある問題で、嫌いな数字の入った数字候補を除外して、そうでない数字を表示(=前段)。
全て嫌いな数字だった場合は none を返すという設定でしたが(=後段)、
後段の部分がどうしても解けません。私の書いたコードは以下の通りですが、
blank?, include?, present? nil? 全て試しましたが、"none"を表示させることはできませんでした。
最初の三行は標準入力に関わるコードです。

unlike_num = gets.to_i room_sum = gets.to_i room_num = readlines(chomp: true).map(&:to_s) room_num.each do |num| unless num&.include?("#{unlike_num}") accept_num = num if accept_num.blank? puts "none" else puts accept_num end end end

入力例としては、
9 (嫌いな数字)
3 (数字候補の数)
409 (数字候補(以下も同じ))
509
109
です。
前段を出力できる場合は、期待される回答になります。

何卒よろしくお願いいたしますm_ _m

DrqYuto👍を押しています

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

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

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

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

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

gouf

2019/12/11 08:36

「嫌いな数字」とはこちらの問題に合致しませんでしょうか? : https://paiza.jp/challenges/46/ready 公開が許可されている練習問題ではなくスキルチェック用の課題となっていますが、問題ありませんか? 杞憂であれば無視してください。
guest

回答2

0

unless num&.include?("#{unlike_num}")としているので、条件に当てはまる場合は対応するendまですべて飛ばされてしまいます。

「出力した数を数えて、0個ならnoneを出力する」というような、抜本的な構造変更の必要性があります(room_num.eachの中でチェックをやろうとすると、「1つでも出力されたか」という条件をチェックするのは必要以上に煩雑となります)。

投稿2019/12/11 05:02

maisumakun

総合スコア145975

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

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

0

あなたのプログラムでは、数字ひとつづつ puts "none" を出すか出さないか決めています。
でも課題は「全てが嫌いだったとき」で一つづつ行うわけでは無いです。

二つ方法があります。

  1. まず全てきらいな数字ばかりかどうかしらべ、

そうだったら noneを出して終わり。
ではなかったら、ひとつづつ好き嫌いを調べて表示
2) ひとつづつ調べて好きだったら表示し、「好きなのがあった」flagを立てる
さいごに、好きなのが合ったflagを調べて、noneを出すかどうか判断する

投稿2019/12/11 05:03

winterboum

総合スコア23567

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問