はてなキーワード: BUZZとは
http://anond.hatelabo.jp/20070510170511
皆素直に繰り返しの構文で1から100まで回してんのね(違うのがあったら面白いかなと思った)。
そうか、せっかくExcelなんだからループいらないじゃん。
てことでhttp://anond.hatelabo.jp/20070509233601を改造。
Public Sub FizzBuzz2() Range("A1:A100").Formula = _ "=IF(INT(ROW()/3)*3=ROW()*1,IF(INT(ROW()/5)*5=ROW()*1,""FizzBuzz"",""Fizz""),IF(INT(ROW()/5)*5=ROW()*1,""Buzz"",ROW()))" End Sub
まあ内部的にはループしてるんだろうけど、そこはそれ。
剰余不可より100回ループ不可、てほうが制限としては面白いかもね。
public class FizzBuzz { private final int start; private final int last; private final int fizz; private final int buzz; public FizzBuzz(int start, int last, int fizz, int buzz) { this.start = start; this.last = last; this.fizz = fizz; this.buzz = buzz; } public static void main(String[] args) { new FizzBuzz(1, 100, 3, 5).execute(); } private void execute() { for (int i = start; i <= last; i++) { if(isMultiple(i, fizz)){ System.out.println("Fizz"); } if(isMultiple(i, buzz)){ System.out.println("Buzz"); } if( !isMultiple(i, fizz) && !isMultiple(i, buzz)){ System.out.println(i); } } } private boolean isMultiple(int i, int base) { if(i/base * base == i){ return true; } return false; } }
勝手に修正してみた。
Javaのクラスってコンストラクタとデストラクタって必須じゃなかったっけ?
あ、CならisMultipleは#defineするから一行で済むんだが…。
http://anond.hatelabo.jp/20070510221521
じゃあやるわ
オリジナルはこちら→http://anond.hatelabo.jp/20070510220016
#include <stdio.h> int main() { int count = 0; do { if (count == count / 15 * 15) printf("FizzBuzz\n"); else if (count == count / 3 * 3) printf("Fizz\n"); else if (count == count / 5 * 5) printf("Buzz\n"); else printf("%d\n", count); } while (count++ < 100); return 0; }
ロジックそのものは元のものをそのまま使った。インデント以外にも改行と変数名とスペースの有無を変更、あとコンパイルが通るように stdio.h を include して main() で包んだ。実際に通るかどうかは試してないので知らん。
int aa=0; do { if(aa==aa/15*15) printf("FizzBuzz\n"); else if(aa==aa/3*3) printf("Fizz\n"); else if(aa==aa/5*5) printf("Buzz\n"); else printf("%d\n",aa); }while(aa++<100);
ゴルファーじゃないけど短く出来たので
#!/usr/bin/perl @s[map {$_*3} (1..33)] = map {"Fizz"} (1..33); @s[map {$_*5} (1..20)] = map {@s[$_*5]."Buzz"} (1..20); print join "\n", map {$s[$_]||$_} (1..100,"");
http://anond.hatelabo.jp/20070510174121
正規表現でFizzBuzzに置換するような解法は……
5の倍数は /[05]$/ でいけるけど、3の倍数がわかんない。数字を足し合わせるなんて出来ないよな。
つーことで
print join "\n",map {(eval(join("+",split//,eval(join("+",split//))))=~/[369]/)?(/[05]$/?"FizzBuzz":"Fizz"):/[05]$/?"Buzz":$_} (1..100),""
配列を合計する方法がわかんなかった。けど一行に収まって満足。
http://anond.hatelabo.jp/20070508170219
「%(剰余演算子)使用禁止」みたいな話があったので、逆に無駄に馬鹿っぽいプログラムが出てくると、どれくらい間抜けな「剰余を求める関数」になるか見てみたい。
……いざ間抜けに作ろうとすると、それはそれで難しい。
#!ruby -Ks # 3で割り切れるなら0を返す # 割り切れないときは各桁の数を足した数字が返ってくるけど、再帰用だから気にしないでね>< def mod3_equal_zero(i) s = i.to_s num = 0 s.split('').each {|c| num += c.to_i } if (num > 9) then num = mod3_equal_zero(num) end num=0 if num == 3 || num == 6 || num == 9 num end # 5で割り切れるなら0を返す def mod5_equal_zero(i) s =i.to_s i=0 if s[-1,1] == "0" i=0 if s[-1,1] == "5" i end # メイン (1..100).each{|i| str ="" str += "Fizz" if mod3_equal_zero(i) == 0 str += "Buzz" if mod5_equal_zero(i) == 0 str = i.to_s if (str == "") print str,"\n" }
http://anond.hatelabo.jp/20070508170219
#include <stdio.h> int main(void); int main(void) { int cn,nf,nb,nfb; cn=nf=nb=nfb=0; for(cn=1;cn<=100;cn++){ while(cn>nf) nf+=3; while(cn>nb) nb+=5; while(cn>nfb) nfb+=15; if(cn==nfb){ printf("FizzBuzz\n"); }else if(cn==nf){ printf("Fizz\n"); }else if(cn==nb){ printf("Buzz\n"); }else{ printf("%d\n",cn); } } return(0); }
リンクつけわすれごめんなさい
http://anond.hatelabo.jp/20070508170219
こうですか?よくわかりません(><)
COBOLなんて需要無いか…
IDENTIFICATION DIVISION. PROGRAM-ID. FizzBuzz. ENVIROMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 W-添字I PIC S9(09) COMP VALUE ZERO. 01 W-添字J PIC S9(09) COMP VALUE ZERO. 01 W-出力エリア PIC X(08). PROCEDURE DIVISION. FIZZBUZZ-MAIN. PERFORM VARYING W-添字I FROM 1 BY 1 UNTIL W-添字I > 100 MOVE SPACE TO W-出力エリア PERFORM VARYING W-添字J FROM 3 BY 3 UNTIL W-添字J > 100 IF W-添字I = W-添字J THEN MOVE 100 TO W-添字J MOVE 'Fizz' TO W-出力エリア ELSE CONTINUE END-IF END-PERFORM PERFORM VARYING W-添字J FROM 5 BY 5 UNTIL W-添字J > 100 IF W-添字I = W-添字J THEN IF W-出力エリア = SPACE THEN MOVE 'Buzz' TO W-出力エリア ELSE MOVE 'Buzz' TO W-出力エリア(5:4) END-IF MOVE 100 TO W-添字J ELSE CONTINUE END-IF END-PERFORM IF W-出力エリア = SPACE THEN MOVE W-添字I TO W-出力エリア ELSE CONTINUE END-IF DISPLAY W-出力エリア END-PERFORM. FIZZBUZZ-END. GOBACK.
皆素直に繰り返しの構文で1から100まで回してんのね(違うのがあったら面白いかなと思った)。
これをニモニック言語に置き換えていくのは簡単だと思う。言語は適当だけど読めるでしょ。
$c=1; $c3=3; $c5=5; { $c3--; $c5--; if (($c3 && $c5)==0) { if ($c3 == 0) { print "Fizz"; $c3=3; } if ($c5 == 0) { print "Buzz"; $c5=5; } } else { print $c; } if (($c-100) == 0) { exit; } $c++; } while(1)
何度も直していたら自分の能力に対する自信をなくしてきたorz 本職じゃなくてよかったぜ。
0判定にこだわっているのは、フラグが立つから(分かる人には分かる)。
http://anond.hatelabo.jp/20070508170219
Public Sub FizzBuzz() Dim i As Integer Dim cc As Range For i = 1 To 100 Set cc = Cells(i, 1) cc.FormulaR1C1 = _ "=IF(INT(ROW()/3)*3=ROW()*1,IF(INT(ROW()/5)*5=ROW()*1,""FizzBuzz"",""Fizz""),IF(INT(ROW()/5)*5=ROW()*1,""Buzz"",ROW()))" Next i Set cc = Nothing End Sub
printはワークシート上に。
個人的にはもっと変わり種が見てみたい。冴子先生にFizzBuzzしゃべらせてみるとか。
なんだこれ難しいな…。
100までの整数がなんらかの状態でレコードにあって後はSQLひとつ流せばおわりなんだけど
select if (tf.fizzbuzz = '',tf.num,tf.fizzbuzz) fizzbuzz from ( select num, concat( if (mod(num,3)=0,'fizz',''), if (mod(num,5)=0,'buzz','') ) fizzbuzz from tmp_fizzbuzz ) tf ;
うえのSQLをphpMyAdminで流しても反応がない。。。。
いまいちどころか、なかなかピンとこないなぁ。
慣れてきたつもりだったんだけど。。
_ノ乙(、ン、)_
FizzBuzz・・・。
DROP TABLE IF EXISTS `tmp_fizzbuzz`; CREATE TABLE `tmp_fizzbuzz` ( `num` int( 4 ) NOT NULL default 0, `fizz` VARCHAR( 4 ) NOT NULL default '', `buzz` VARCHAR( 4 ) NOT NULL default '', PRIMARY KEY (`num`) ) ; delimiter // DROP PROCEDURE IF EXISTS fizzbuzz// CREATE PROCEDURE fizzbuzz() BEGIN DECLARE bufnum INT DEFAULT 1; delete from `tmp_fizzbuzz`; WHILE bufnum <= 15 DO insert into tmp_fizzbuzz (num) value (bufnum); set bufnum = bufnum + 1; END WHILE; END // delimiter ; call fizzbuzz(); update tmp_fizzbuzz set fizz = 'Fizz' where mod(num,3) = 0; update tmp_fizzbuzz set buzz = 'Buzz' where mod(num,5) = 0; select if (concat( fizz ,buzz) = '' , num, concat( fizz ,buzz) ) FizzBuzz from tmp_fizzbuzz;
mySQLでつくってみた。
文字列の連結ができないで死にそうになった。。+とか&でやっても0で帰ってきやがるのさ。
そしてそもそもストアドを使わない仮想レコードの作り方ができないで死にそうになった。
なんか、こんなのに時間かけるつもりなかったんだけどなー・・・。
だめっぽ。
modとか使っちゃだめなんだっけ? 知るかヽ(`д´* )ノプンピー
public class FizzBuzz { private final int start; private final int last; private final int fizz; private final int buzz; public FizzBuzz(int start, int last, int fizz, int buzz) { this.start = start; this.last = last; this.fizz = fizz; this.buzz = buzz; } public static void main(String[] args) { new FizzBuzz(1, 100, 3, 5).execute(); } private void execute() { for (int i = 1; i <= last; i++) { System.out.println((i) + (isMultiple(i, fizz) ? "Fizz" : "") + (isMultiple(i, buzz) ? "Buzz" : "")); } } private boolean isMultiple(int i, int base) { for (int j = base; j <= last; j += base) { if (i == j) { return true; } } return false; } }
想定していた回答はこんなの
def setr(a,k,str) a[k-1] = str if a[k-1]==nil && k<=100 end res = Array.new(100) (1..100).each{|i| setr(res,i ,i.to_s) setr(res,i*3 ,"Fizz") setr(res,i*5 ,"Buzz") setr(res,i*15,"FizzBuzz") } print res.join("\n")
http://anond.hatelabo.jp/20070508173455 が気に入ったのでこなたあげます っ(=ω=.)
#include <stdio.h> main() { int i; int fizz; int buzz; fizz = 3; buzz = 5; for (i = 1; i <= 100; i++) { if (fizz != i && buzz != i) printf("%d\n", i); else { if (fizz == i) { printf("Fizz"); fizz += 3; } if (buzz == i) { printf("Buzz"); buzz += 5; } putchar('\n'); } } }