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

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

新規登録して質問してみよう
ただいま回答率
85.48%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

11回答

4035閲覧

おもしろ・特徴のある Fizz Buzz回答(たくさん)ください。

Mr_Roboto

総合スコア2208

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

3グッド

2クリップ

投稿2016/07/21 15:17

数年前に流行して検索すれば死ぬほど出てくるFizzBuzzですが、
ルービックキューブに似て単純なだけにプログラマを惹きつけるのでしょうか。

なので、改めてあげるのもどうかと思いますが
なんかSQLの質問が思いの外バズってるようなので気を良くして質問します。

ルールは知っていると思いますが、一応書いておきます。

  • 1〜100の数値を出力する
  • 3で割り切れる数値の時は、数値の代わりに「Fizz」を出力
  • 5で割り切れる数値の時は、数値の代わりに「Buzz」を出力
  • 3でも5でも割り切れる数値の時は、「FizzBuzz」と出力する。

検索すれば出てきますが、一応出力例です。

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 20 〜〜〜〜〜 省略 100

縦でも横でもいいですが、横の場合は、空白またはタブ文字で区切って出力してください。

初心者の方で、この問題を初めて聞いたという方は普通に頑張って解いて回答していただいて構いません。
(なるべく検索等せずに自力で頑張りましょう、間違えてもOKです)

ベテランの方で普通に書いてもつまらんという人は、何か特徴のあるもの書いて頂けると嬉しいです。
・if forを使わないはよくありますので、例えば、最短で無く最長とか、
無意味にモンテカルロ法使うとか、GoogleAPIで「人生宇宙すべての答え」を取得して
計算するとか、そういうノリで

もっと言えば、FizzBuzzさえ成立すればプログラミング言語でなくてもOKです。
笑えるネタ系でも構いません。(正しいと主張してくれれば正解が出なくてもOKです)

大幅に下げられる覚悟で質問しますが、もしかしたら新しい知見が得られるのかも知れないと期待します。
ベストアンサー付けるつもりもありませんので、みなさん気が向いたら遊んでやってください。

では、よろしくお願いします。

ozwk, ai_2013_dev, Ogamary👍を押しています

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

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

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

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

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

guest

回答11

0

言語: HQ9F+

HQ9F+

1F

多分これが一番短いと思います

投稿2016/07/21 15:49

raccy

総合スコア21735

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

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

Mr_Roboto

2016/07/21 21:42

こんなのあるんですね、知りませんでした。面白い!
guest

0

投稿2016/07/21 15:33

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Mr_Roboto

2016/07/21 15:40

早速ありがとうございますw 寝る前にタブレットで見てて動揺して間違ってベストアンサー押しちゃいました、すいません。^^;
Chironian

2016/07/21 15:40

あっはっはっ。なるほど。 > 何か特徴のあるもの書いて頂けると嬉しいです。 プログラムでさえないとは、いいところ突きますね!
退会済みユーザー

退会済みユーザー

2016/07/21 16:03

> BJCRobot さん 大金星かと思ったのですが。 > Chironian さん 仕様外の挙動を含んでいるため、実は失格。
Chironian

2016/07/21 16:12

後少しのところまで来てたのですけどねぇ。残念(笑)
退会済みユーザー

退会済みユーザー

2016/07/21 20:43

「29!」
guest

0

すごろくゲーム
ルール
プレイヤーは2人
・方眼紙に縦に1〜100の数字を書いて用意する。
・プレイヤーはジャンケンを行い、勝ったプレイヤーは自分の年齢分だけマスを進むことができる。
・プレイヤーは止まったマス(スタート地点は含まない)の数字を自分の名前に書き換える。この時、相手プレイヤーの名前が先に書いてあった場合は自分の名前を後ろに書き出す。

このルールで3歳児Fizzと5歳児Buzzが戦えばいつか完成するはず。たぶん、

投稿2016/07/21 16:34

編集2016/07/21 16:38
yona

総合スコア18155

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

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

Mr_Roboto

2016/07/21 21:42

ほうほう、猿のシェークスピアよりは確立高そうですが、果たして・・・?^_^;
yona

2016/07/28 16:42

計算はできませんが、Fizzが15,30,45,60,75,90を先に通過するのが条件だから意外と確率高いと思いますよ。
guest

0

javascript

1console.log("12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz1617Fizz19BuzzFizz2223FizzBuzz26Fizz2829FizzBuzz3132Fizz34BuzzFizz3738FizzBuzz41Fizz4344FizzBuzz4647Fizz49BuzzFizz5253FizzBuzz56Fizz5859FizzBuzz6162Fizz64BuzzFizz6768FizzBuzz71Fizz7374FizzBuzz7677Fizz79BuzzFizz8283FizzBuzz86Fizz8889FizzBuzz9192Fizz94BuzzFizz9798FizzBuzz");

投稿2016/07/21 15:42

編集2016/07/21 15:55
yamato_hikawa

総合スコア2092

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

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

Mr_Roboto

2016/07/21 15:50

ありがとうございます。 それを踏まえて新しく書いて頂けると嬉しいです。
Mr_Roboto

2016/07/21 21:43

ありがとうございます。 既に指摘されていますが、仕様を満たしていませんね ^_^;
guest

0

お題には直接関係しませんが、似たような取り組みを「ソートアルゴリズム」で見たことがあります。

ボゴソードなるアルゴリズムには爆笑しました。

投稿2016/07/25 14:18

HogeAnimalLover

総合スコア4830

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

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

Mr_Roboto

2016/07/25 14:28

ありがとうございます。 Wikipediaで読んでみました。なるほどこういうノリですね。 みなさん、まぁまぁ結構真面目に書いてくださってて、 あまり伝わらなかったようで、これは私の文章力の問題かとは思いますが。 ジョークRFCに少し近いノリかなとも思います。 (洗濯バサミDHCP、とかtelnetランダム喪失オプションとか、 今でも毎年発表されてるのかなぁ・・・ちょっと調べてみよう)
guest

0

効率の悪い例ということで。(^_^;

PHP

1<?php 2function fb($src, $n, $word) { 3 $tmp = $src; 4 for ($i=$n; $i<101; $i+=$n) { $tmp[$i] = $word; } 5 return $tmp; 6} 7 8$ar = fb(fb(fb(range(0, 100), 3, 'Fizz'), 5, 'Buzz'), 15, 'FizzBuzz'); 9$x = array_shift($ar); 10foreach ($ar as $val) { echo $val . "\n"; } 11?>

特徴は if文が無いことス。

投稿2016/07/25 12:54

takasima20

総合スコア7458

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

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

Mr_Roboto

2016/07/25 13:29

ありがとうございます。 なかなかに難解ですね。 これも時間のあるとき(気力のあるとき)にデバッグしながら読ませてもらいます。
guest

0

テキストエディタ 秀丸のマクロで作ってみました。

// // Fizz Buzz回答 // // 秀丸ver 8.59 Init: // 初期化 Main: // メイン処理 #a = 1; while( #a <= 100 ) { if ((#a % 3 == 0) && (#a % 5 == 0)) { insert "FizzBuzz" + "\n"; }else if (#a % 3 == 0) { insert "Fizz" + "\n"; }else if (#a % 5 == 0) { insert "Buzz" + "\n"; }else { insert str(#a) + "\n"; } #a = #a + 1; } End: // 終了処理

投稿2016/07/25 11:36

ai_2013_dev

総合スコア338

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

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

Mr_Roboto

2016/07/25 13:33

おー、ありがとうございます。 そこから!みたいないい例ですねw でも検索してみると何人か書いてる人いますねぇ そういうマイナーなの探して私も挑戦してみようかなぁ・・・ って何があるかそこからだな。 (Whitespaceというのをを思い出したけどやってる人いるなw)
ai_2013_dev

2016/07/25 14:13

マイナーなの探しいるなら、 なでしこ (teratailのタグなし)なんかどうでしょうか? http://nadesi.com/top/ ま~マイナーとはいえ、日本語プログラム言語としては有名です。
Mr_Roboto

2016/07/25 14:21

なでしこは、クジラ飛行机さんの作品ですよね、結構有名なのでは? 未踏ソフトウェア創造事業に採択されてますし、日経ソフトウエアにも連載もってますし 優秀な方だとは思うのですが、ちょっと独自路線すぎて 私は、あんまりというか・・・ その、ええ、まぁそんな感じです ^_^;
ai_2013_dev

2016/07/25 14:31

そうですね。マイナーは言い過ぎました。日本語プログラム言語としては 有名です。teratailにタグ登録されていないだけで、マイナーと判断しました。
Mr_Roboto

2016/07/25 14:32

タグ要望出してみましょうか w
ai_2013_dev

2016/07/25 14:38

うん、そこまでしなくても。
Mr_Roboto

2016/07/25 14:44

ちょっとなでしこで、書いてみたい気になってきました ^_^;
ai_2013_dev

2016/07/25 14:47

がんばってください!
guest

0

ハードウェアでコア部分だけ

verilog

1module FizzBuzzConverter( 2 input wire clk, 3 input wire reset, 4 input wire[7:0] data_in, 5 input wire valid_in, 6 output wire ready_out, 7 output reg[8*10-1:0] data_out, 8 output reg valid_out, 9 input wire ready_in 10 ); 11 12 wire isFizz = (data_in % 8'd3) == 1'b0; 13 wire isBuzz = (data_in % 8'd5) == 1'b0; 14 wire isFizzBuzz = isFizz && isBuzz; 15 16 wire[3:0] hnd = data_in / 8'd100; 17 wire[3:0] ten = (data_in % 8'd100) / 8'd10; 18 wire[3:0] one = (data_in % 8'd10); 19 20 reg[2:0] digit ; 21 always@(*)begin 22 digit = 3'd3; 23 if(hnd == 1'b0)begin 24 if(ten == 1'b0)begin 25 digit = 3'd1; 26 end 27 else begin 28 digit = 3'd2; 29 end 30 end 31 end 32 33 localparam[7:0] separator = ","; 34 35 reg[4*8-1:0] numString; 36 always @(*) begin 37 case(digit) 38 3'd1: numString = {(one+8'h30),separator ,"\0" ,"\0"}; 39 3'd2: numString = {(ten+8'h30),(one+8'h30),separator ,"\0"}; 40 3'd3: numString = {(hnd+8'h30),(ten+8'h30),(one+8'h30),separator }; 41 default: numString = "err "; 42 endcase 43 end 44 45 reg[8*10-1:0] words; 46 always @(*) begin 47 if(isFizzBuzz) 48 words = {1'b0,"FizzBuzz", separator, "\0"}; 49 else if(isFizz) 50 words = {"Fizz",separator,"\0",32'b0}; 51 else if(isBuzz) 52 words = {"Bizz",separator,"\0",32'b0}; 53 else 54 words = {numString,48'b0}; 55 end 56 57 58 always @(posedge clk)begin 59 if(reset) begin 60 data_out <= 80'bx; 61 valid_out <= 1'b0; 62 end 63 else if(valid_in && ready_in) begin 64 data_out <= words; 65 valid_out <= 1'b1; 66 end 67 end 68 69 assign ready_out = ready_in; 70endmodule

あとは1~100を流す前段と
文字列をシリアル送信でもLCD表示でもする後段があれば動くはずです。

多分。
きっと。

投稿2016/07/22 07:40

ozwk

総合スコア13521

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

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

Mr_Roboto

2016/07/22 08:03

ありがとうございます。 処理内容は全然わからないのですが、 ハードウェアといってるのは、具体的にはどのような環境なのでしょうか?
ozwk

2016/07/22 08:09

これはプログラムではありません。 ハードウェア記述言語で書かれた回路です。
Mr_Roboto

2016/07/22 08:43

そういうものがあるのですね、勉強になります。φ(..)メモメモ
guest

0

とりあえず普通に。あまりやる人がいなさそうなバッチファイルで作ってみました。単にバッチで書くだけならありふれているので、ifを使わずに書いてみました。

dos

1@echo off 2setlocal 3 4for /L %%A in (1,1,100) do call :proc %%A 5goto :eof 6 7:proc 8set /A FB = 1 + (%1 %% 3 + 2) / 3 * 2 + (%1 %% 5 + 4) / 5 9for /F "tokens=%FB%" %%A in ("FizzBuzz Fizz Buzz %1") do echo %%A

投稿2016/07/22 03:28

catsforepaw

総合スコア5938

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

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

Mr_Roboto

2016/07/22 06:59

ありがとうございます。 んーーーーんんんん??? 難しい!!! 最初の2行しか分かりません ^_^;
guest

0

お遊びで作ってたらこんな時間に・・・これは酷い。

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5 6namespace FizzBuzz { 7 /// <summary> 8 /// メインでござる 9 /// </summary> 10 class Program { 11 static void Main(string[] args) { 12 13 var conposite = new FizzBuzzComposite(); 14 15 StringBuilder sb = new StringBuilder(); 16 for (int i = 1; i <= 100; i++) { 17 sb.AppendLine(conposite.GetString(i)); 18 19 } 20 21 Console.WriteLine(sb.ToString()); 22 } 23 } 24} 25 26using System; 27using System.Collections.Generic; 28using System.Linq; 29using System.Text; 30 31namespace FizzBuzz { 32 /// <summary> 33 /// 残念ユーティリティ 34 /// スコープを極端に狭めた結果 35 /// </summary> 36 public static class FizzBuzzUtil { 37 38 private static readonly string FIZZ = "Fizz"; 39 private static readonly string BUZZ = "Buzz"; 40 41 /// <summary> 42 /// Fizz 43 /// </summary> 44 private static string Fizz { 45 get { 46 return FIZZ; 47 } 48 } 49 50 /// <summary> 51 /// Buzz 52 /// </summary> 53 private static string Buzz { 54 get { 55 return BUZZ; 56 } 57 } 58 } 59} 60 61using System; 62using System.Collections.Generic; 63using System.Linq; 64using System.Text; 65 66namespace FizzBuzz { 67 /// <summary> 68 /// 残念インターフェイス 69 /// </summary> 70 /// <typeparam name="T"></typeparam> 71 interface IFizzBuzzComposite<T> where T : struct, IComparable, IFormattable, IEquatable<T>, IConvertible, IComparable<T> { 72 73 string GetString(T number); 74 } 75} 76 77using System; 78using System.Collections.Generic; 79using System.Linq; 80using System.Text; 81 82namespace FizzBuzz { 83 /// <summary> 84 /// 人生は再帰できない・・・CRANNADは(ry 85 /// </summary> 86 public class FizzBuzzComposite : IFizzBuzzComposite<int> { 87 /// <summary> 88 /// ホワルバ2は名作だと思う 89 /// </summary> 90 private List<IFizzBuzzComposite<int>> leaf = new List<IFizzBuzzComposite<int>>(); 91 92 /// <summary> 93 /// コンストラクタ 94 /// </summary> 95 public FizzBuzzComposite() { 96 leaf.Add(new FizzLeaf()); 97 leaf.Add(new BuzzLeaf()); 98 } 99 100 /// <summary> 101 /// FizzBuzz 102 /// </summary> 103 /// <param name="number"></param> 104 /// <returns></returns> 105 public string GetString(int number) { 106 StringBuilder sb = new StringBuilder(); 107 foreach (var lf in leaf) { 108 sb.Append(lf.GetString(number)); 109 } 110 111 return !string.IsNullOrEmpty(sb.ToString()) ? sb.ToString() : number.ToString(); 112 } 113 } 114} 115 116using System; 117using System.Collections.Generic; 118using System.Linq; 119using System.Text; 120using System.Reflection; 121 122namespace FizzBuzz { 123 /// <summary> 124 /// 東鳩 125 /// </summary> 126 public class FizzLeaf : IFizzBuzzComposite<int> { 127 128 /// <summary> 129 /// Fizz 130 /// </summary> 131 /// <param name="number"></param> 132 /// <returns></returns> 133 public string GetString(int number) { 134 if (number % 3 != 0) return string.Empty; 135 136 Type type = typeof(FizzBuzzUtil); 137 object target = null; 138 PropertyInfo pi = type.GetProperty("Fizz", BindingFlags.NonPublic | BindingFlags.Static); 139 140 return pi.GetValue(target, null) as string; 141 } 142 } 143} 144 145using System; 146using System.Collections.Generic; 147using System.Linq; 148using System.Text; 149using System.Reflection; 150 151namespace FizzBuzz { 152 /// <summary> 153 /// うたわれ 154 /// </summary> 155 public class BuzzLeaf : IFizzBuzzComposite<int> { 156 157 /// <summary> 158 /// Buzz 159 /// </summary> 160 /// <param name="number"></param> 161 /// <returns></returns> 162 public string GetString(int number) { 163 if (number % 5 != 0) return string.Empty; 164 165 Type type = typeof(FizzBuzzUtil); 166 object target = null; 167 168 return type.InvokeMember("Buzz", 169 BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Static, 170 null, 171 target, 172 null) as string; 173 } 174 } 175}

投稿2016/07/21 19:24

Panzer_vor

総合スコア1636

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

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

Mr_Roboto

2016/07/21 21:41

ありがとうございます。 難解? 時間のある時に読みます。
guest

0

https://www.rosettacode.org/wiki/FizzBuzzで FizzBuzz のたくさんのプログラム例をみることができます。

投稿2016/07/21 15:37

katoy

総合スコア22324

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

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

Mr_Roboto

2016/07/21 15:48

ありがとうございます。 今回は、真面目なのあまり求めてません^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問