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

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

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

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

Q&A

解決済

5回答

663閲覧

(超初心者)RubyでFizzBuzz問題が解けません

ikaika3

総合スコア25

Ruby

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

1グッド

1クリップ

投稿2019/03/29 16:15

RubyでFizzBuzz問題を解こうとしています。
書いた結果がこれです

i = 1 while i < 50 puts i i = i + 1 if i % 15 == 0 puts "FizzBuzz" elsif i % 3 == 0 puts "Fizz" elsif i % 5 == 0 puts "Buzz" end コード

これのどういう所が間違っていますかね?

ご指導くださいー

DrqYuto👍を押しています

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

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

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

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

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

javahack

2019/03/29 18:13

何が問題なのか明確にしてください。 1.動作しない 2.動作するが期待した結果が出力されない 2.の場合、期待している結果と実際に出力されている結果を質問文に追記してください。
guest

回答5

0

3の倍数でも5の倍数でも無いときだけ、数字を表示するのでは?

投稿2019/03/29 16:49

otn

総合スコア84505

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

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

ikaika3

2019/03/30 13:54

なるほど、その考えはありませんでした!回答ありがとうございます!
otn

2019/03/30 16:13

> その考えはありませんでした! FizzBuzz問題とは何であるかを誤解していたと言うこと??
ikaika3

2019/03/30 17:17

はい、そうです。
guest

0

... どういう所が間違っていますか ...

質問文のコードを実行させた結果はこんなふうになります。
イメージ説明

こんな風に変更しては?
x.rb

ruby

1i = 1 2while i < 50 3 if i % 15 == 0 4 puts "FizzBuzz" 5 elsif i % 3 == 0 6 puts "Fizz" 7 elsif i % 5 == 0 8 puts "Buzz" 9 else 10 puts i 11 end 12 i = i + 1 13end

実行例
イメージ説明

投稿2019/03/29 23:34

katoy

総合スコア22324

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

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

katoy

2019/03/30 01:01

マイナス評価の理由コメントに書いてほしいです。
ikaika3

2019/03/30 13:51

すごいです!私の書きたいコードそのものです!回答ありがとうございます!あなたの回答をベストアンサーにしたかったのですが、間違えて違う人の回答をベストアンサーにしてしまいました。ごめんなさい~
退会済みユーザー

退会済みユーザー

2019/03/30 22:30

ベストアンサーは付け替えられるので、付け替えれば良い。
guest

0

1行で書いてみるとか

puts [*1..15].map{|x| (x % 15).zero? ? :FizzBuzz : (x % 3).zero? ? :Fizz : (x % 5).zero? ? :Buzz :x}

投稿2019/03/30 02:23

DrqYuto

総合スコア432

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

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

ikaika3

2019/03/30 13:44

超初心者の私にはこのコードがまったく分からないので分かるまでじっくり見てみます!回答ありがとございます!
DrqYuto

2019/03/30 13:46

puts [*1..15]で1から15まで配列展開して後はmapでって感じです。
guest

0

ベストアンサー

これのどういう所が間違っていますかね?

エラーが出ているはずなので、それを手がかりに解決するのが良いです。
本件では構文が間違っているので、該当箇所を修正すると現状のコードでも記述したとおりに動くようになります。

*見慣れた FizzBuzz の出力とは異なるので、個人的にはロジックも見直したほうが良いと思います。

投稿2019/03/30 00:09

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ikaika3

2019/03/30 13:40

回答ありがとうございます!コードを見直して色々いじってやってみます!
guest

0

実はFizzBuzzってのは誰かが先日作った問題ではないのです。
英語圏では有名なゲームが元になっているのです。
Wikipediaの記事(日本語)もちゃんと用意されています。
https://ja.wikipedia.org/wiki/Fizz_Buzz

Fizz Buzz(フィズ・バズ、Bizz BuzzやBuzzとも呼ばれる)は英語圏で長距離ドライブ中や飲み会の時に行われる言葉遊びである。

元々は山手線ゲームのような会話で遊ぶゲームだったんですね、

プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。

ただし、3で割り切れる場合は「Fizz」(Bizz Buzzの場合は「Bizz」)、5で割り切れる場合は「Buzz」、両者で割り切れる場合(すなわち15で割り切れる場合)は「Fizz Buzz」(Bizz Buzzの場合は「Bizz Buzz」)を数の代わりに発言しなければならない。
発言を間違えた者や、ためらった者は脱落となる。

なんだか世界のナベアツの「3の倍数と3が付く数字のときだけアホになります」のネタみたいですね。
実はFizzBuzzの前提があってそれをネタにしたものだったのです。


さて、プログラミング言語というのは殆どが英語圏発祥であり、
それによる遊びというのが日本に輸入されるという形でやってくる事が多く、
一般人には馴染みの薄いFizzBuzzも輸入されてやってきたものです。

(まぁRubyは日本人のmatzが作った国産の言語ですが、FizzBuzzはC言語の時代からあるし)

ゲームは、以下のとおりに発言が進行する。

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, Fizz Buzz, 31, 32, Fizz, 34, Buzz, Fizz, ...

これが質問文の勘違いになります。
ちゃんと元ネタを知ってれば勘違いすることはないので、次はもう大丈夫ですよね?


期待する出力フォーマットは、
下記のように改行コードを挟んで出力するルールが一般的ですかね。

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz

投稿2019/04/11 04:15

miyabi-sun

総合スコア21158

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問