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 コード
これのどういう所が間違っていますかね?
ご指導くださいー
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
投稿2019/03/29 23:34
総合スコア22324
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
総合スコア432
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
総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。