数年前に流行して検索すれば死ぬほど出てくる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です)
大幅に下げられる覚悟で質問しますが、もしかしたら新しい知見が得られるのかも知れないと期待します。
ベストアンサー付けるつもりもありませんので、みなさん気が向いたら遊んでやってください。
では、よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答11件
0
言語: HQ9F+
HQ9F+
1F
多分これが一番短いと思います
投稿2016/07/21 15:49
総合スコア21739
0
投稿2016/07/21 15:33
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/21 15:40
退会済みユーザー
2016/07/21 16:03
2016/07/21 16:12
退会済みユーザー
2016/07/21 20:43
0
すごろくゲーム
ルール
プレイヤーは2人
・方眼紙に縦に1〜100の数字を書いて用意する。
・プレイヤーはジャンケンを行い、勝ったプレイヤーは自分の年齢分だけマスを進むことができる。
・プレイヤーは止まったマス(スタート地点は含まない)の数字を自分の名前に書き換える。この時、相手プレイヤーの名前が先に書いてあった場合は自分の名前を後ろに書き出す。
このルールで3歳児Fizzと5歳児Buzzが戦えばいつか完成するはず。たぶん、
投稿2016/07/21 16:34
編集2016/07/21 16:38総合スコア18155
0
javascript
1console.log("12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz1617Fizz19BuzzFizz2223FizzBuzz26Fizz2829FizzBuzz3132Fizz34BuzzFizz3738FizzBuzz41Fizz4344FizzBuzz4647Fizz49BuzzFizz5253FizzBuzz56Fizz5859FizzBuzz6162Fizz64BuzzFizz6768FizzBuzz71Fizz7374FizzBuzz7677Fizz79BuzzFizz8283FizzBuzz86Fizz8889FizzBuzz9192Fizz94BuzzFizz9798FizzBuzz");
投稿2016/07/21 15:42
編集2016/07/21 15:55総合スコア2092
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/21 15:50
2016/07/21 15:55
2016/07/21 21:43
0
お題には直接関係しませんが、似たような取り組みを「ソートアルゴリズム」で見たことがあります。
ボゴソードなるアルゴリズムには爆笑しました。
投稿2016/07/25 14:18
総合スコア4830
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
総合スコア7466
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
総合スコア338
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/25 13:33
2016/07/25 14:13
2016/07/25 14:21
2016/07/25 14:31
2016/07/25 14:32
2016/07/25 14:38
2016/07/25 14:44
2016/07/25 14:47
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
総合スコア13553
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
総合スコア5944
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
総合スコア1636
0
https://www.rosettacode.org/wiki/FizzBuzzで FizzBuzz のたくさんのプログラム例をみることができます。
投稿2016/07/21 15:37
総合スコア22324
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/21 21:42