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

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

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

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

Q&A

解決済

1回答

226閲覧

RubyでFizzbuzz問題

tomokomomoko

総合スコア10

Ruby

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

0グッド

0クリップ

投稿2017/07/17 08:31

###前提・実現したいこと
初めて投稿するので、不備等があり失礼な質問をしてしまうかもしれませんがよろしくお願いします。
Rubyで下記の設定でFizzBuzz問題を解決したいです。
###該当のソースコード

Ruby

1class Multiper 2 def Fifteen(n) 3 (n%15) == 0 4 end 5 6 def Three(n) 7 (n%3) == 0 8 end 9 10 def Five(n) 11 (n%5) == 0 12 end 13 14Fifteen = 15 15Three = 3 16Five = 5 17 181.step(100) do |count| 19 puts case count 20 when Fifteen 21 "fizzBuzz" 22 when Three 23 "Fizz" 24 when Five 25 "Buzz" 26 else 27 count 28 end 29end

###お願いしたい事

このクラス設定及び初期化で解決したいのですが、プログラミング学習を始めたばかりのために解決に至っておりません。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Ruby

1# encoding: utf-8 2 3def fizzbuzz(n) 4 return 'FizzBuzz' if (n % 15).zero? 5 return 'Buzz' if (n % 5).zero? 6 return 'Fizz' if (n % 3).zero? 7 n 8end 9 10100.times do |x| 11 puts fizzbuzz(x + 1) 12end 13

Ruby

1# encoding : utf-8 2 31.upto(100) { |x|puts (x % 15).zero? ? 'FizzBuzz' : (x % 5).zero? ? 'Buzz' : (x % 3).zero? ? 'Fizz' : x } 4

考えてみました。

質問者様のコードを動くように変更。

Ruby

1class Multiper 2 def Fifteen(n) 3 (n%15) == 0 4 end 5 6 def Three(n) 7 (n%3) == 0 8 end 9 10 def Five(n) 11 (n%5) == 0 12 end 13 14 Fifteen = 15 15 Three = 3 16 Five = 5 17 18 def initialize 19 1.step(100) do |count| 20 puts case 21 when Fifteen(count) 22 "fizzBuzz" 23 when Three(count) 24 "Fizz" 25 when Five(count) 26 "Buzz" 27 else 28 count 29 end 30 end 31 end 32end 33 34Multiper.new

変更点
1.1.step(100) do |count|にendがなかったので追加。
2.initializeメソッドを追加。
3.caseにあったcountを削除。
4.Fifteenメソッドなどに引数を渡すように変更。

無くても問題がないもの

Fifteen = 15 Three = 3 Five = 5

#追記

Ruby

1class Multiper 2 1.step(100) do |count| 3 puts case 4 when (count % 15).zero? 5 "fizzBuzz" 6 when (count % 3).zero? 7 "Fizz" 8 when (count % 5).zero? 9 "Buzz" 10 else 11 count 12 end 13 end 14end 15 16Multiper.new

このように書けばinitializeメソッドに
1.step(100) do |count|以下を入れなくても
大丈夫みたいです。

このように書かないでFifteenメソッドなどを
利用した場合は実行時期の関係でエラーが発生する
ようです。

参考
Rubyでクラス宣言直下に書かれたメソッドの実行時期

投稿2017/07/17 09:19

編集2017/07/17 11:25
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tomokomomoko

2017/07/17 11:19

丁寧にありがとうございました。 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問