プログラマーなら「FizzBuzz問題」解けるよな?
1 :
(´・ω・`) ◆Hc1VAagKMg :
2008/04/29(火) 20:06:06
2 :
仕様書無しさん :2008/04/29(火) 20:06:54
|| !| │ || !| │ ,.-─‐-.、 =||=!| │ /:::::::::::::::::::::ヽ || !| │ |:::: ::::::::::::::::::::::l …もうダメだこのスレ || !| │ |::: ::::::::::::::::::::::::! =||=!| │ |:::::::::::::::::::::::::::::l ─.─.┤ | !:::::::::::::::::::::::::li:|ニニニニニ.、 | .! !:::::::::::::::::::::::::l|::| ̄ ̄.!| |.! | .! 、r, /|::::::::::::::::::::::::ll.,7:! .!| |.! ||`ー|. ̄ 丁 ̄|\ ´ミ《 |:| !:::::::::::::::::::::::l|.l|:.:.!_」.! !.! __||二二二]|__ || | .!| !::!|:::::::::::::::::::::├.|:.:.::l─´. !.! || ̄ ̄ ̄ ̄ ̄.!l `ヽ !、 |l/:.:.:|:l|::::::::|!:::::::ll|::l|:.:.:.:|=コ|.| || l三三l || ,_」____!l_:.:.:|:|.!:::::::|l!::::::|l:.:||:.:.:.::l'丑丑|ニl___,'ニヽ___ ||.==========!l '‐┬┬‐─ヽ|ll_|__:_!|::!:.::l‐!:.:.:.::l.─────┬┌′ || l三三l || | /丁´/:.:.:.:.:.:.:.:.:.:.:.:.`ヽ!:.:.:.:.:! ̄ ̄ ̄ ̄丁ヽ、| ||==========:!| | !.| | / ::/ .:.:.:.:.:.:.:.:.:.:.:.:.:.:ヽ:.::_│ ! | | || l三三l !l .| !.! ||、:::.!:.:.:.: :.:.:.:.:.: :.:.:.:.:.:、:`<ヽ, .! ! ! ||----------|.! ___,| !.|_メ´丶、:: ::::::::::::, -‐─、:ヽ:::::`\ ヽ .| l _  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ー'" 、┴-、:_:_;:-l_____, -ー‐‐‐‐' ´ `ー'
@echo off setlocal rem ケータイからカキコ rem 動くか知らん :START set count=1 if count%15==0 ( echo FizzBuzz set printflag=true ) if count%5==0 ( echo Buzz set printflag=true ) if count%3==0 ( echo Fizz set printflag=true ) if not "%printflag%"=="" echo %count% set /a count+=1 if %count% gtr 100 ( goto :END ) else ( goto :START ) :END pause exit
void main(void) { puts("1"); puts("2"); puts("Fizz"); puts("4"); puts("Buzz"); puts("Fizz"); puts("7"); puts("8"); puts("Fizz"); puts("Buzz"); puts("11"); puts("Buzz"); puts("13"); puts("14"); puts("FizzBuzz"); puts("16"); ・・・・ }
Dim s, i For i = 1 To 100: s = s & IIf(i Mod 15 = 0, "FizzBuzz", IIf(i Mod 3 = 0, "Fizz", IIf(i Mod 5 = 0, "Buzz", i))) & vbCrLf: Next MsgBox s
7
8 :
4 :2008/04/29(火) 22:15:06
カウント変数の初期化位置ミスってるなww 無限ループだわ(´・ω・`) 動くか知らんが
誰か機械語で書いてくれ
FizzBuzzなんて古い。 今は世界のナベアツ
じゃああせんぶら。ごーつーぶんww
13
マに立てるな ム板だろ
16
17
String s; for(i=1;i<=100;i++){ s=""; if(i%3==0) s="Fizz"; if(i%5==0) s+="Buzz"; if(s==""){ print(i.toString()); }else{ print(s); } }
19
Buzz
21 :
仕様書無しさん :2008/04/30(水) 10:55:51
Fizz
const char *pfizz = "fizz"; const char *pbuzz = "buzz"; const char *psuhzi = "%d"; //const char *pkaigyo = "\n"; __asm { mov cx, 1 loop1: push ecx mov ax, cx mov dl, 3h div dl mov bl, ah //n%3余り mov ax, cx mov dl, 5h div dl mov bh, ah //n%5余り cmp bl,0 je fizz cmp bh,0 jne suhzi fizz: cmp bl,0 jne buzz
push pfizz //fizz print call printf add esp,4 buzz: cmp bh,0 jne next push pbuzz //buzz print call printf add esp,4 next: jmp end suhzi: pop ecx push ecx push ecx push psuhzi //shizi print call printf add esp,8 end: pop ecx inc cx cmp cx,64h +1 jnz loop1 }
無駄に長い
26 :
(´・ω・`) ◆UmpQiG/LSs :2008/05/01(木) 20:47:31
/* FizzBuzz */ #include <stdio.h> int main() { int a = 100; int i = 0; for(i=1;i<=a;i++){ if( (i % 3 ) == 0 ) { printf("Fizz"); } if( (i % 5 ) == 0 ) { printf("Buzz"); } if( (i % 3) != 0 && (i % 5) != 0 ) { printf("%d ",i); } printf("\n"); } return 0; }
27 :
仕様書無しさん :2008/05/01(木) 21:33:31
static void Main(string[] args) { for (int i = 1; i < 101; ++i) { if (i % 3 == 0) { Console.Out.Write("Fizz"); if (i % 5 == 0) { Console.Out.Write("Bazz"); } Console.Out.WriteLine(""); } else if (i % 5 == 0) { Console.Out.WriteLine("Bazz"); } else { Console.Out.WriteLine(i.ToString()); } } }
28 :
仕様書無しさん :2008/05/01(木) 22:03:08
void func(void) { char str[9]; for(int i = 0; i < 100; i++) { memset(str, 0, sizeof(str)); if (!(i % 3)) { strcpy(str, "Fizz"); } if (!(i % 5)) { strcat(str, "Buzz"); } if (str[0]) { printf("%s\n", str); } else { printf("%d\n",i); } } } これで手を打てw
鬼才現る!って言いたくなる様なコードを書いてくれよ
String fizz = "Fizz"; String buzz = "Buzz"; StringBuffer ret = new StringBuffer(); for (int i = 1; i < 101; i++) { if ((i % 3) == 0) { ret.append(fizz); } if ((i % 5) == 0) { ret.append(buzz); } if (ret.length() == 0) { System.out.println(i); } else { System.out.println(ret.toString()); ret = new StringBuffer(); } }
/* 普通のコードしか思いつかねぇ */ #include <stdio.h> int main(void) { int i; for (i = 1; i <= 100; i++) { if (i % 3 == 0 && i % 5 ==0) printf("FizzBuzz\n"); else if (i % 3 == 0) printf("Fizz\n"); else if (i % 5 == 0) printf("Buzz\n"); else printf("%d\n", i); } return (0); }
/* じゃあ、あまり普通じゃないコードを */ #include <stdio.h> const char *s[] = { "FizzBuzz\n", "%d\n", "%d\n", "Fizz\n", "%d\n", "Buzz\n", "Fizz\n", "%d\n", "%d\n", "Fizz\n", "Buzz\n", "%d\n", "Fizz\n", "%d\n", "%d\n" }; int main() { int i; for (i = 1; i <= 100; i++) { printf(s[i % 15], i); } }
REM FizzBuzz.bat @ECHO OFF SETLOCAL SET Rest=0 SET Start=1 SET End=100 SET Count=%Start% :BEGIN SET FizzBuzz= CALL :CALC %Count% 3 Fizz CALL :CALC %Count% 5 Buzz CALL :CALC %Count% 15 FizzBuzz IF "%FizzBuzz%"=="" ( ECHO %Count% ) ELSE ( ECHO %FizzBuzz% ) SET /A Count+=1 IF %Count% GTR %End% ( GOTO :FINISH ) ELSE ( GOTO :BEGIN ) :FINISH PAUSE EXIT :CALC SET /A "Rest=%1 %% %2" IF %Rest%==0 SET FizzBuzz=%3 GOTO :EOF
Buzz
Fizz
37 :
仕様書無しさん :2008/05/02(金) 13:31:58
このスレでは、3の倍数のレスでは「Fizz」、5の倍数のレスでは「Buzz」と書き込み、 それ以外ではレス番号を書き込んでください。
3の倍数か3を含む数字の時だけアホになってください。
Fizz
Buzz
41
42 :
仕様書無しさん :2008/05/02(金) 19:57:48
// Fizz public class FizzBuzz { public static void main(String[] args) { for (int i = 1; i <= 100; i++) { System.out.println( i % 15 == 0 ? "FizzBuzz" : i % 5 == 0 ? "Buzz" : i % 3 == 0 ? "Fizz" : i); } } }
#include<stdio.h> int main(int,char**) { int i = 0; while( ++i <= 100 ) printf((i%15) ? "FizzBuzz\n" : ((i%3) ? "Fizz\n" : ((i%5) ? "Buzz\n" : "%d\n") ) , i ); return 0; }
44 :
43 :2008/05/02(金) 20:17:38
逆だw #include<stdio.h> int main(int,char**) { int i = 0; while( ++i <= 100 ) printf( (i%15) ? ( (i%3) ? ( (i%5) ? "%d\n" : "Fizz\n") : "Buzz\n" ) : "FizzBuzz\n" , i ); return 0; }
45 :
仕様書無しさん :2008/05/02(金) 20:43:47
#include <stdio.h> int main() { printf("#include <stdio.h>\n\n"); printf("int main()\n"); printf("{\n"); int i; for (i = 1; i <= 100; i++) { if (i % 15 == 0) puts("\tputs(\"FizzBuzz\");"); else if (i % 3 == 0) puts("\tputs(\"Fizz\");"); else if (i % 5 == 0) puts("\tputs(\"Buzz\");"); else printf("\tputs(\"%d\");\n", i); } printf("\treturn 0;\n"); printf("}\n"); return 0; }
>>45 だったらそのままコンパイルから実行までやっちゃおうぜ
// Win限定 #include "stdio.h" #include "process.h" // c for vbs void main () { FILE *f = fopen( "a.vbs", "w+" ); fputs( "Dim s\r\n", f ); for( int i = 1; i <= 100; i ++ ) { fprintf( f, "s = s & \"" ); if( i % 3 == 0 ) fprintf( f, "Fizz" ); if( i % 5 == 0 ) fprintf( f, "Buzz" ); if( i % 3 != 0 && i % 5 != 0 ) fprintf( f, "%d", i ); fprintf( f, "\" & vbcrlf\n" ); } fprintf( f, "MsgBox(s)\r\n" ); fclose( f ); system( "a.vbs" ); }
48 :
仕様書無しさん :2008/05/04(日) 05:13:53
// ファイルに出力 import java.io.BufferedWriter; import java.io.FileWriter; import java.io.FileNotFoundException; import java.io.IOException; public class FizzBuzzCreator { private static final String LS = System.getProperty("line.separator"); public static void main (String[] args) throws IOException, FileNotFoundException { BufferedWriter bw = null; try { bw = new BufferedWriter(new FileWriter("FizzBuzz.java")); bw.write("import java.io.FileWriter;" + LS); bw.write("import java.io.FileNotFoundException;" + LS); bw.write("import java.io.IOException;" + LS); bw.write("import java.io.BufferedWriter;" + LS); bw.write("public class FizzBuzz {" + LS); bw.write("private static final String LS = System.getProperty(\"line.separator\");" + LS); bw.write("public static void main (String[] args) throws FileNotFoundException, IOException {" + LS); bw.write("BufferedWriter bw = new BufferedWriter(new FileWriter(\"result.txt\"));" + LS); bw.write("int i = 0;" + LS); bw.write("while (i++ < 100)" + LS); bw.write("bw.write(" + LS); bw.write("i % 15 == 0 ? \"FizzBuzz\" + LS : " + LS); bw.write("i % 5 == 0 ? \"Buzz\" + LS : " + LS);
49 :
仕様書無しさん :2008/05/04(日) 05:14:21
// 続き bw.write("i % 3 == 0 ? \"Fizz\" + LS : String.valueOf(i) + LS" + LS); bw.write(");" + LS); bw.write("bw.flush();" + LS); bw.write("bw.close();" + LS); bw.write("}}" + LS); } catch (IOException e) { e.printStackTrace(); throw e; } finally { bw.flush(); bw.close(); } Runtime rt = Runtime.getRuntime(); try { if (rt.exec("javac FizzBuzz.java").waitFor() != 0) { throw new RuntimeException("javac faild"); } if (rt.exec("java FizzBuzz").waitFor() != 0) { throw new RuntimeException("java faild"); } } catch (InterruptedException e) { e.printStackTrace(); } } }
Buzz
Fizz
52 :
仕様書無しさん :2008/05/05(月) 20:42:11
fiz
ひさしぶりのPG よい子が約1時間かかった... public class FizzBuzz{ void fizzMsd(int max,int fizz,int buzz){ theLoop: for(int counter = 1; counter <= max; counter++){ if( ( (counter % fizz) == 0 ) & ( (counter % buzz) == 0 ) ){ System.out.println("FizzBuzz"); continue theLoop; } if( ( (counter % fizz) == 0 ) || ( (counter % buzz) == 0 ) ){ if( (counter % fizz) == 0 ){ System.out.println("Fizz"); } else if( (counter % buzz) == 0 ){ System.out.println("Buzz"); } } else { System.out.println(counter); } } } public static void main(String args[]){ FizzBuzz myFB = new FizzBuzz(); myFB.fizzMsd(100,3,5); } }
X86アセンブラ、C、C++、Java、VB辺りが出たので他のないすかー? ぴゅう太とかリアルで動かしてくれたら泣ける。
>>55 つってもCやVB系は書いたし他のメジャーなんも出たからさぁ。
変な奴こねえかなぁ。そういやDelphiねーな。
<?php for ($i=0 ; $i<100 ; $i++ ){ $a=$i; if (!$i%3)$a.="fizz"; if (!$i%5)$a.="buzz"; echo $a; } ?>
>>57 for( $i = 1; $i <= 100; ... ) だな。
かめさん=タートル!作る。 かめさん!ペンなし。 かめさん!100 0 位置。 かめさん!180度 向き。 かめさん!ペンあり。 時計=タイマー!作る。 時計!0.1秒 間隔。 時計!100回 回数。 文字を表示する部分=フィールド!作る −40 20 位置 80 40 大きさ。 時計!「|n| 表示する文字=””。 「n%3==0」!なら「表示する文字=”フィズ”」実行。 「n%5==0」!なら「表示する文字=表示する文字!”バズ”足す」実行。 「表示する文字==””」!なら「表示する文字=n」実行。 文字を表示する部分!(表示する文字)書く。 かめさん!(色!0 (n*2.5) (n*2.5) 作る)線の色。 かめさん!(100*cos(n*10)) (−100*sin(n*10)) 位置。 かめさん!(180−(n*10)) 向き。 」実行。
10 FOR L=1 TO 100 20 D=0 30 IF L MOD 3=0 THEN PRINT "FIZZ"; : D=1 40 IF L MOD 5=0 THEN PRINT "BUZZ"; : D=1 50 IF D=1 THEN PRINT "" : GOTO 70 60 PRINT L 70 NEXT L
10 C3=0: C5=0 20 FOR L=1 TO 100 30 C3=C3+1+3*(C3=2) : C5=C5+1+5*(C5=4) 40 IF C3=0 THEN PRINT "FIZZ"; 50 IF C5=0 THEN PRINT "BUZZ"; 60 IF C3*C5=0 THEN PRINT "" ELSE PRINT L 70 NEXT L
でませんでした∧||∧
やっぱでるな
こうですかわかりません>< <?php for ($i=1 ; $i<101 ; $i++ ){ $a=""; if (!$i%3)$a.="fizz"; if (!$i%5)$a.="buzz"; if ($a="")$a=$i; echo $a; } ?>
$a="" orz
>>64 う、うん。それでいいよ。
俺が悪かったよ。
LISP担当なにやってるの
69 :
仕様書無しさん :2008/05/06(火) 11:23:23
#!/usr/bin/perl for ($i = 1; $i <= 100; $i++) { print (!($i % 15) ? "FizzBuzz\n" : !($i % 5) ? "Buzz\n" : !($i % 3) ? "Fizz\n" : "$i\n"); } print "PHPがバカにされる理由がわかった。\n";
3が付く時だけFizzと言ってください
71 :
仕様書無しさん :2008/05/06(火) 12:38:34
「FizzBuzz問題」でググッたけど、どのブログも「この問題をどう解くか?」 という話になっていて、元の話の「プログラムを書けない奴をどうするか?」 と言う話はほとんど出てないのな。 日本じゃどの現場でも、プログラムが全く書けない奴を抱えて困った経験など、 してないんだろうか?
>>71 うんそうだよw極例だが
部長は設計できない、実装できない、捏造完璧
課長は設計嘘っぽい、実装嘘っぽい、報告うまい
主任は実装できそう、設計できない、ごますりうまい
正社員は実装できそう、ごますりうまそう
派遣は実装できる、設計もできる
プログラムの書ける人が困るのが日本式だぜw
>>71 書けない奴はこんな問題、
ある意味歯牙にもかけないだろ
Lisp、つーかGauche (use srfi-1) (print (map (lambda (x) (cond ((= (remainder x 15) 0) "FizzBuzz") ((= (remainder x 3) 0) "Fizz") ((= (remainder x 5) 0) "Buzz") (else x))) (iota 100 1)))
haskell勉強してみたw module Main where main = do putStrLn $ fizz_buzz [1..100] fizz_buzz [] = [] fizz_buzz (x:xs) = fizz_buzz_chk x ++ "\n" ++ fizz_buzz xs fizz_buzz_chk x | x `mod` 15 == 0 = "FizzBuzz" | x `mod` 3 == 0 = "Fizz" | x `mod` 5 == 0 = "Buzz" | otherwise = show x
76
>>75 掲示板に投稿するとオフサイドルールが・・・
78 :
75 :2008/05/06(火) 20:45:28
//1/4 int func_fz(int int_st = 1,int_fn = 100){ if(int_st >= int_fn) return -1; sz_buff = int_fn - int_st +2; //文字列の配列を宣言 char* str_guard = "guard"; char** rly_fb = new(sz_buff); (char** + sz_buff) = *guard; //作業変数を宣言 char pt_st = rly_fb; char pt_tgt = rly_fb; char* str_fizz = "fizz"; char* str_buzz = "buzz"; char* str_none = "";
//2/4 //表示する数字の変数 int tgt_num = int_st; //変換メソッド do{ bool b_fizz=false,b_buzz=false; char* str_out = str_none; if(tgt_num%3 == 0) b_fizz = true; if(tgt_num%5 == 0) b_buzz = true; if(!(b_fizz || b_buzz)){ char* str_out = ltoa(tgt_num); str_fb = new(str_num); str_fb = str_out; }
//3/4 else{ char* tmp_fizz = "\0"; char* tmp_buzz = "\0"; char* pt_out = str_out; if(b_fizz) tmp_fizz = str_fizz; if(b_buzz) tmp_buzz = str_buzz; while(tmp_fizz != '\0'){ pt_out++ = tmp_fizz++; } while(tmp_buzz != '\0'){ pt_out++ = tmp_buzz++; } *pt_out = '\0'; *pt_tgt++ = pt_out;
//4/4 }while(*pt_tgt != guard) pt_tgt = pt_st; //表示 do{ printf("\s\n"pt_tgt++); }while(*pt_tgt != guard); return 0; }//環境無いからデバッグして無い。もしかしたら動くかも?
# そんじゃ、pythonで for i in range(1, 101): if i % 3 == 0 and i % 5 == 0: print 'FizzBuzz' elif i % 3 == 0: print 'Fizz' elif i % 5 == 0: print 'Buzz' else: print i
# rubyで for i in 1..100 if i % 3 == 0 && i % 5 == 0 print("FizzBuzz\n") elsif i % 3 == 0 print("Fizz\n") elsif i % 5 == 0 print("Buzz\n") else print(i, "\n") end end
void fizzbuzz(int num) { if (num) { fizzbuzz(num-1); switch( (((num % 5) == 0) << 1) | ((num % 3) == 0) ) { case 0: printf("%d\n", num); break; case 1: printf("fizz\n"); break; case 2: printf("buzz\n"); break; case 3: printf("fizzbuzz\n"); break; } } } void main() { fizzbuzz(100); }
86 :
仕様書無しさん :2008/05/07(水) 04:44:01
#include <stdio.h> int main(int argc,int argv) { for (argc=1;argc<=100;argc++) { switch(argv=argc%15) { case 0: case 3: case 6: case 9: case 12: printf("Fizz"); if (argv) break; case 5: case 10: printf("Buzz"); break; default: printf("%d",argc); break; } printf("¥n"); } return (0); }
============================ 俺用しおり ここまで暗記 ============================
88 :
仕様書無しさん :2008/05/07(水) 12:26:29
let rec fizzbuzz n = let num = string_of_int n in let fizz = if (n mod 3 = 0) then "Fizz" else "" in let buzz = if (n mod 5 = 0) then "Buzz" else "" in match n with 101-> () |_-> if (n mod 3 <> 0 ) then if (n mod 5 <> 0) then print_string num; print_string fizz; print_string buzz; print_string "\n"; fizzbuzz (n+1) in fizzbuzz 1
89 :
仕様書無しさん :2008/05/07(水) 18:02:17
コードを極限まで短くしたのを見てみたい。 言語はCで
main(){int i;for(i=1;i<=100;i++)printf(i%3?i%5?"%d\n":"buzz\n":i%5?"fizz\n":"fizzbuzz\n",i);} これ以上短くなるかな
main(){int�i;while(++i<101)printf(i%3?i%5?"%d¥n":"buzz¥n":i%5?"fizz¥n":"fizzbuzz¥n",i);}
>>90 ワロタ
三項演算子は思いついたがそんな使い方があるとは
int i;は外に出してグローバルにしないと初期値が不定になるぞ。
パソコン買って半年の超初心者の俺が何故かこのスレに来ました。 ここにいる人達はどう考えても天才ですよね?
>94 いいえ違います ここにいる人達は毎日 おい○○、あれやっておけ おい○○、明日までにデスマでこれデバレ おい○○、パン買って来いあと報告書ここ修正 おい○○、出張いってこい おい○○、よかったな某大手Nに売られるぞw こんな感じで虐げられた下級民族以下の扱いを 毎日受けています
超初心者がこんなスレにたどり着いた方法を知りたい
酔った勢いでひまわり(日本語プログラミング言語)で書いてみた 答え=「」 足す数=0 100回( 足す数=足す数+1 一時3=足す数%3 もし、一時3=0 ならば、答え=答え&「FIZZ」 一時5=足す数%5 もし、一時5=0 ならば、答え=答え&「BUZZ」 もし、(一時3<>0)かつ(一時5<>0)ならば、答え=答え&足す数 答え=答え&「¥n」 ) 答えと、表示。 分かりにくっ! プログラムとしても日本語としても分かりにくっ! なんかね、根っこがBASICで、それを日本語に訳しただけって感じがするよ、ひまわり。 コンピュータからして英語圏発祥だから仕方ないのかなあ。
じゃLispで。 (defun fizzbuzz (n) (labels ((rec (n acc) (if (= n 0) acc (rec (1- n) (cons (or (fzchk n 15 "fizzbuzz") (fzchk n 3 "fizz") (fzchk n 5 "Buzz") n) acc))))) (rec n nil))) (defun fzchk (n x str) (and (= (mod n x) 0) str))
Pythonで。 ちょっとズルか? for i in range(100):print i+1,i%3/2*"Fizz"+i%5/4*"Buzz"or-~i
main(i){ for(;i<101;puts(i++%5?"":"Buzz")) printf(i%3?i%5?"%d":"":"Fizz",i); }
with sq as( select rownum n from dual connect by level<=100 ) select case when mod(n,5)=0 and mod(n,3)=0 then 'FizzBuzz' when mod(n,3)=0 then 'Fizz' when mod(n,5)=0 then 'Buzz' else to_char(n) end from sq
104 :
新入り :2008/05/18(日) 14:02:12
#include<stdio.h>
void main(i){for(i=1;i<101;){
if(i%5&&i%3)printf("%d",i);
printf(i%3?"":"Fizz");
printf(i++%5?"":"Buzz");
puts("");}}
俺の技量ではとても100Bytesは切れん。
>>102 が神すぐる。
>>90 の73Bytesってのはどんなバケモノコードか見てみたいな。
107 :
106 :2008/05/19(月) 03:15:40
main(a){ while(++a<100){ printf("\n%d\r",a); if(!(a%3))printf("Fizz"); if(!(a%5))printf("Bizz"); }} 最初の改行が削れなかった。
なんで未初期化のまま使ってるんだろうと思ってたが、 mainの第1引数であることに今さら気づいたorz
110 :
仕様書無しさん :2008/05/23(金) 08:30:46
コードサイズよりバイナリサイズを削ろうよ とか思う俺はKY?
そういやJavaScript出てなくね? <script type="text/javascript"> for(i = 1; i <=100; ++i) { if(i%3!=0 && i%5!=0) { document.write(i); } else { if(i%3==0) document.write("Fizz"); if(i%5==0) document.write("Buzz"); } document.write("<br>"); } </script>
main(i){while(i<101){printf("%d\r%s%s\n",i++,i%3?"":"Fizz",i%5?"":"Buzz");}}
>>111 KYだなぁ。たぶんお前が思ってるよりずっと大きな意味で。
main(i,j){printf(i%3*i%5?"%d\n":"%.*s\n",i%3*i%5?i:i%15?4:8,j+(i%3?4:0));if(i<100)main(i+1,"FizzBuzz");} main(i,j){printf(i%3*i%5?"%d\n":"%.*s\n",i%3*i%5?i:i%15?4:8,j+(i%3?4:0));i<100?main(i+1,"FizzBuzz"):0;} char *a="%d\0FizzBuzz\0Fizz";main(i){for(;i<101;i++)printf((i%15?i%3?i%5?0:7:12:3)+a,i),puts("");} main(i,a){i<101?printf((i%15?i%3?i%5?"%d":a+4:a+9:a),i),puts(""),main(i+1,"FizzBuzz\0Fizz"):0;} main(i,a){i<101?printf((i%15?i%3?i%5?"%d\n":a+10:a:a+6),i),main(i+1,"Fizz\n\0FizzBuzz\n"):0;} main(i,j){if(i<101)printf(i%3?i%5?"%d":j:j+1,i),puts(i%5?"":j+6),main(i+1,"\0Fizz\0Buzz");} main(i,j){i<101?printf(j%3?j%5?"%d":"":"Fizz",i)+puts(j%5?"":"Buzz"),main(i+1,(i+1)%15):0;} char*a="\0Buzz\0Fizz";main(i){for(;i<101;puts(!(i++%5)+a))printf(i%3?i%5?"%d":a:a+6,i);} main(i,j){if(i<101)printf(i++%3?j?"%d":"":"Fizz",i)+puts("\0Buzz"+!j),main(i,i%5);} main(i,j){i<101?printf(i++%3?j?"%d":"":"Fizz",i)+puts("\0Buzz"+!j),main(i,i%5):0;} main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3*i%5?"%d":i%3?"":"Fizz",i);} main(i,j){for(;j=i%5,i<101;puts("Buzz"-!!j))printf(i++%3?j?"%d":"":"Fizz",i);} main(i,j){for(;j=i%5,i<101;puts("Buzz"-!!j))printf(i++%3?j?"%d":0:"Fizz",i);} main(i){for(;i<101;puts("\0Buzz"+!(i++%5)))printf(i%3?i%5?"%d":0:"Fizz",i);} main(i){for(;i<101;puts("Buzz"-!!(i++%5)))printf(i%3?i%5?"%d":0:"Fizz",i);} main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3?i%5?"%d":"":"Fizz",i);} main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3?i%5?"%d":0:"Fizz",i);} コンパイラ依存の力技含め色々やったが、どうしても74文字が限界。 73文字ってどうやるのだろう。。
¥rを使うダーティーな奴がありなら、これでもいけたよ。 main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3?"%d¥r":"Fizz",i);}
横須賀市ですね、わかります
熊本県八代市のこともたまには思い出してあげてください。
どう見ても京都府八幡市です。 本当にありがとうございました。
京都といえば 八ツ橋だろ
神戸の 洋館です
腐れ ヨーグルト
後楽園 遊園地
#include <iostream> int main() { for (int i = 1; i <= 100; i++) { if ((i % 3 != 0) && (i % 5 != 0)) { std::cout << i; } else { if (i % 3 == 0) std::cout << "Fizz"; if (i % 5 == 0) std::cout << "Buzz"; } std::cout << std::endl; } }
128 :
仕様書無しさん :2009/01/14(水) 13:48:08
ほしゅ
smalltalkキボソ
>>10 とりあえず何も考えずに作ったなべあつ
#include<stdio.h>
int include3(int i){
int q,r;
q = i;
while(q > 0){
r = q % 10;
if(r == 3){return 1;}
q /= 10;
}
return 0;
}
int main(){
int i;
for(i = 1; i <= 40; ++i){
printf("%d",i);
if((i % 3 == 0) || include3(i)){printf("!");}
printf("\n");
}
return 0;
}
#!/bin/bash v=1 fz="Fizz" bz="Buzz" while [ $v -le 100 ]; do d="" three=`expr $v % 3` five=`expr $v % 5` if [ $three -eq 0 ]; then d="$fz" fi if [ $five -eq 0 ]; then d="$d$bz" fi if [ -z "$d" ]; then echo "$v" else echo "$d" fi v=`expr $v + 1` done
Smalltalk (1 to: 100) collect: [:n | | out | out := ''. n \\ 3 = 0 ifTrue: [out := out, 'Fizz']. n \\ 5 = 0 ifTrue: [out := out, 'Buzz']. out isEmpty ifTrue: [out := n]. out ]
133 :
仕様書無しさん :2009/01/19(月) 10:19:53
J wd&>((0 i.~15 3 5|]){((;;])'Fizz';'Buzz'),<)"0>:i.100
あぼーん
まったくだ。死ねばいいのにね。 このコピペしてる莫迦。
137 :
仕様書無しさん :2009/01/21(水) 16:03:36
こんにちは、JONY.Cです。 最近夜遅くまでゲームしてしまい朝起きるのがつらいです。 夜更かしは美容と良い仕事の大敵なんでほどほどにしないと・・・。 さてさて本日からe-AMUSEMENT PASSメンバーズサイトでプレー画面のカスタマイズが、 そして携帯サイトでカスタマイズのレーンカバーが公開されました。 その中でも少々分かりにくい「THE TROOPER'S JOURNEY」の条件ですが・・・。 前回のヒントはわざとらしすぎて分かり易すぎるとチーム員からの指摘されたので 今回はプログラマらしく暗号で条件を公開したいと思います。 ----------------------- 38 3B 33 08 36 25 32 36 08 39 22 3A 69 6A 62 77 18 05 77 38 3B 33 08 24 3F 38 27 08 39 22 3A 69 6A 64 67 key=0x57 ----------------------- 上の暗号を解くと35文字の文字列になります。 その文字列が今回のレーンカバー「THE TROOPER'S JOURNEY」の出現条件のヒントになっています。 ということで時間がある方は暗号を解いてみてはどうでしょうか? プログラマじゃないとなかなか解けない暗号かもです・・・・^^; 答え合わせは次の私のブログ当番の時に覚えていたら発表します。 ・・・・とはいえ本来の目的である「THE TROOPER'S JOURNEY」の条件はうすうすばれているようですが・・・・。
old_area_numって何?
old_shop_numってなに?
140 :
仕様書無しさん :2009/01/23(金) 11:48:33
>>137 一緒に音ゲー板に帰るぞ
ていうかとっくに解析されてるのにいまさらマ板に持ってくるなよ
「16進×35バイト」らしき元データが35文字になるとか 見え透いてる。
#include<stdio.h> template<int N, int N3, int N5> struct FizzBuzz; template<int N3, int N5> struct FizzBuzz<101, N3, N5> { static void f() {} }; template<int N, int N3, int N5> struct FizzBuzz<N, N3, N5> { static void f() { printf("%d\n", N); FizzBuzz<N+1, N3-1, N5-1>::f(); } }; template<int N> struct FizzBuzz<N, 0, 0> { static void f() { puts("FizzBuzz"); FizzBuzz<N+1, 2, 4>::f(); } }; template<int N, int N5> struct FizzBuzz<N, 0, N5 > { static void f() { puts("Fizz"); FizzBuzz<N+1, 2, N5-1>::f(); } }; template<int N, int N3> struct FizzBuzz<N, N3, 0> { static void f() { puts("Buzz"); FizzBuzz<N+1, N3-1, 4>::f(); } }; int main() { FizzBuzz<1, 2, 4>::f(); return 0; }
143 :
仕様書無しさん :2009/01/25(日) 14:29:20
昨日、プログラムを始めた俺がチャレンジしたが、途中でよくわかなくなってしまった。 指摘とかしてもらえる? <?php for($a = 1; $a <= 100; $a++){ if(($a % 15)===0){ print "FizzBuzz";} }elseif(($a % 3)===0){ print "Fizz"; }elseif(($a % 5)===0){ print "Buzz";} }else{ print $a;} { ?>
if () { print "...";} }elseif }が1つ余計じゃない?
>>143 あからさまに括弧の対応が変。
最初からやり直せ。
146 :
仕様書無しさん :2009/01/25(日) 17:48:27
2chに書き込むときに消えただけかもしれないけど、 ちゃんとインデントして、括弧の位置をそろえると、 無駄な作業を減らせるよ
viで%押せば済むだろ。
#/bin/sh N=1 while [ $N -le 100 ] do R3=`expr $N % 3` R5=`expr $N % 5` if [ $R3 -eq 0 -a $R5 -eq 0 ] then echo FizzBuzz elif [ $R3 -eq 0 ] then echo Fizz elif [ $R5 -eq 0 ] then echo Buzz else echo $N fi N=`expr $N + 1` done
無駄なfork&exec大杉
for(int i = 1, mod3 = 3, mod5 = 5; i <= 100; i++){ if(--mod3 == 0){ mod3 = 3; System.out.print("Fizz"); } if(--mod5 == 0){ mod5 = 5; System.out.print("Buzz"); } System.out.println(mod3 == 3 || mod5 == 5 ? "" : i); }
Pythonで、リスト内包表記を使う以外は割と素直にやってみる。 def fizzbuzz(n): if n % 15 == 0: return 'FizzBuzz' if n % 5 == 0: return 'Buzz' if n % 3 == 0: return 'Fizz' return n for x in [fizzbuzz(n) for n in range(1,101)]: print x
154 :
仕様書無しさん :2009/03/09(月) 22:16:08
// これ、もっと簡単になる? using System; using System.Linq; class Program { static void Main(string[] args) { var n = from x in Enumerable.Range(1, 100) select new { Num = x, Print = "" }; var result = from p in n join q in from x in n where x.Num % 3 == 0 select new { x.Num, Print = "Fizz" } on p.Num equals q.Num into r from s in r.DefaultIfEmpty(new { p.Num, Print = "" }) join t in from x in n where x.Num % 5 == 0 select new { x.Num, Print = "Buzz" } on s.Num equals t.Num into u from v in u.DefaultIfEmpty(new { s.Num, Print = "" }) select new { s.Num, Print = s.Print + v.Print } into w select w.Print == "" ? w.Num.ToString() : w.Print; foreach (var i in result) Console.WriteLine(i); } }
むしろ、よくそんな書き方が出来たなと言いたい フツーに書いた方が簡単な希ガスw
Ozyでぐぐれかす
失せろカス
#! /usr/bin/perl foreach(1..100){ print 'Fizz' if $_ % 3; print 'Buzz' if $_ % 5; print $_ unless $_ % 3 or $_ % 5; print "\n"; } 恥ずかしいくらい単純すぎるかな…
恥ずかしいくらい単純なミスしてた…orz
三行以上のプログラムにはバグはつきものさ
using System; using System.Collections.Generic; class Program { [STAThread] static void Main() { const int max = 100; var zz = new[] { new KeyValuePair<int, string>(3, "Fizz"), new KeyValuePair<int, string>(5, "Buzz") }; for (var i = 1; i <= max; i++) { var f = true; for (var j = 0; j < zz.Length; j++) { if (i % zz[j].Key == 0) { Console.Write(zz[j].Value); f = false; } } if (f) Console.Write(i); Console.WriteLine(); } } }
/* いまさらだけど、C言語でif無し */ #include <stdio.h> void main(void){ int i ; for(i=1 ; i<=100 ; i++){ ((i%3)==0 && (printf("Fizz"),1)) + ((i%5==0) && (printf("Buzz"),1))!=0 || printf("%d", i) ; printf("\n") ; } }
#include<stdio.h> void fizz(){static int i=1;if(i==0)printf("Fizz");i=(i+1)%3;} void buzz(){static int i=1;if(i==0)printf("Buzz");i=(i+1)%5;} void num() {static int i=1;if(i%3!=0&&i%5!=0)printf("%d",i);i++;} void ret() {printf("\n");} #define repeat10(x) x x x x x x x x x x int main() { repeat10(repeat10(fizz();buzz();num();ret();)); }
#include<stdio.h> int i=1; void fb(){printf("FizzBuzz\n");} void f(){printf("Fizz\n");} void b(){printf("Buzz\n");} void n(){printf("%d\n",i);} class f_list { public: f_list *nxt; void (*f)(); f_list(void (*x)()){nxt=NULL;f=x;} f_list *next(){f();i++;return nxt;} }; #define repeat10(x) x x x x x x x x x x int main() { f_list *p; f_list *s; s=p= new f_list(n);p->nxt= new f_list(n);p=p->nxt; p->nxt=new f_list(f);p=p->nxt;p->nxt=new f_list(n);p=p->nxt; p->nxt=new f_list(b);p=p->nxt;p->nxt=new f_list(f);p=p->nxt; p->nxt=new f_list(n);p=p->nxt;p->nxt=new f_list(n);p=p->nxt; p->nxt=new f_list(f);p=p->nxt;p->nxt=new f_list(b);p=p->nxt; p->nxt=new f_list(n);p=p->nxt;p->nxt=new f_list(n);p=p->nxt; p->nxt=new f_list(f);p=p->nxt;p->nxt=new f_list(n);p=p->nxt; p->nxt=new f_list(fb);p=p->nxt;p->nxt=s; repeat10(repeat10(s=s->next();)); }
15個並べたのか
166 :
164 :2009/04/25(土) 07:30:10
FizzBuzzを実装できるほど優秀なプログラマであるお前らに聞きたいんだが、 最初はfb(),f(),b(),n()といった関数の戻り値を関数ポインタにして 関数自身に次の関数を返させることで循環リストを作るつもりだったんだ。 func_type f1(){ do_something;return f2;} func_type f2(){ do_something;return f3;} func_type f3(){ do_something;return f1;} func_type fp=f1; fp=fp(); fp=fp(); fp=fp(); ... でもfunc_typeをどう宣言していいかわからなかったのでf_listなんてクラスを導入せざるを得なかった。 func_typeはどうやって宣言すればいいの?そもそも無理なの?
def Fizz(x): return 'Fizz' def Buzz(x): return 'Buzz' def FizzBuzz(x): return 'FizzBuzz' def N(x): return x print ','.join([str([FizzBuzz, N, N, Fizz, N, Buzz, Fizz, N, N, Fizz, Buzz, N, Fizz, N, N][i % 15](i)) for i in range(1,101)])
あ〜…投稿しておいてなんだけど、str()はN(x)の中に書いた方が良かったか。 ついでに読みやすく分解。 def Fizz(x): return 'Fizz' def Buzz(x): return 'Buzz' def FizzBuzz(x): return 'FizzBuzz' def N(x): return str(x) func_list = [FizzBuzz, N, N, Fizz, N, Buzz, Fizz, N, N, Fizz, Buzz, N, Fizz, N, N] def mapfunc(i): func = func_list[i % 15] return func(i) ary = map(mapfunc, range(1,101)) print ','.join(ary)
%sed 's/ /\ /g' fizzbuzz.cs using System; class Program { static void Main() { for (int n = 1, c3 = 1, c5 = 1; n <= 100; n++, c3++, c5++) { bool fizz = c3 == 3; bool buzz = c5 == 5; if (fizz) { Console.Write("Fizz"); c3 = 0; } if (buzz) { Console.Write("Buzz"); c5 = 0; } if (! (fizz || buzz)) Console.Write(n); Console.WriteLine(); } } }
#include<stdio.h> int main(void) { for(int i=1;i<=100;++i) { if(!(i%15))puts("Fizz Buzz"); else if(!(i%5))puts("Buzz"); else if(!(i%3))puts("Fizz"); else printf("%d\n",i); } return 0; } 初心者がちょっとそれっぽく書いてみた
>>170 それっぽくはあるけど、良いコードじゃないぞ
実装するなら、実装意図を明確にするべきで、
if (!(i%15))
この記述で無理矢理論理判断に持ち込むのは、良くない例
たしかにコレでも動くけども、
このコードでは 15で割ったあまりが ==0である、ことに意味がある
関数の戻りが0/1で戻ってくるから、それを論理判断にしているわけではない
そこをはき違えると、意図が不明確で、他人が読みづらいコードになる
Cでは当たり前の記述だがな。
XXでは当たり前、で思考停止してるから、糞コードが減らないんじゃね?w
コードに15という定数を使っているのは今一
#include<stdio.h> int main(void) { for(int i=1;i<=100;++i) { if(i%3==0&&i%5==0) puts("Fizz Buzz"); else if(i%5==0) puts("Buzz"); else if(i%3==0) puts("Fizz"); else printf("%d",i); } } 初心者が意見を取り入れて普通に書いた
#include<stdio.h> #define FIZZ_MOD_NUMBER 3 #define BUZZ_MOD_NUMBER 5 #define IS_FIZZ_NUMBER(x) ((x)%FIZZ_MOD_NUMBER==0) #define IS_BUZZ_NUMBER ((x)%BUZZ_MOD_NUMBER==0) #define IS_FIZZ_BUZZ_NUMBER(x) (IS_FIZZ_NUMBER(x) && IS_BUZZ_NUMBER(x)) #define FIZZ_STRING "Fizz" #define BUZZ_STRING "Buzz" #define FIZZBUZZ_STRING FIZZ_STRING " " BUZZ_STRING int main() {
途中で書き込んじまったorz 修正するのもメンドクサイから放置しよ。
多分最速、既出? #include <stdio.h> void main(void) { int i=0,end=100; for(;;){ i++; printf("%d\n",i); //if(i==end)break; i++; printf("%d\n",i); //if(i==end)break; i++; printf("Fizz\n"); //if(i==end)break; i++; printf("%d\n",i); //if(i==end)break; i++; printf("Buzz\n"); //if(i==end)break; i++; printf("Fizz\n"); //if(i==end)break; i++; printf("%d\n",i); //if(i==end)break; i++; printf("%d\n",i); //if(i==end)break; i++; printf("Fizz\n"); //if(i==end)break; i++; printf("Buzz\n"); if(i==end)break; i++; printf("%d\n",i); //if(i==end)break; i++; printf("Fizz\n"); //if(i==end)break; i++; printf("%d\n",i); //if(i==end)break; i++; printf("%d\n",i); //if(i==end)break; i++; printf("FizzBuzz\n"); //if(i==end)break; }; }
179 :
178 :2009/06/20(土) 18:19:20
あー、 100個の結果をそのままprintfした方が早いか... orz 私がバカでした
これ最強。 #include <stdio.h> void main(void) { printf( "1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,FizzBuzz,16,17,Fizz,19,Buzz,Fiz" "z,22,23,Fizz,Buzz,26,Fizz,28,29,FizzBuzz,31,32,Fizz,34,Buzz,Fizz,37,38,Fizz,Buzz" ",41,Fizz,43,44,FizzBuzz,46,47,Fizz,49,Buzz,Fizz,52,53,Fizz,Buzz,56,Fizz,58,59,Fi" "zzBuzz,61,62,Fizz,64,Buzz,Fizz,67,68,Fizz,Buzz,71,Fizz,73,74,FizzBuzz,76,77,Fizz" ",79,Buzz,Fizz,82,83,Fizz,Buzz,86,Fizz,88,89,FizzBuzz,91,92,Fizz,94,Buzz,Fizz,97," "98,Fizz,Buzz" ); };
main(i){for(;i<101;puts("Buzz"-i*i++%5))printf(i%3?i%5?"%d":0:"Fizz",i);}
>void main(void) ここで既に警告が出てるぞ。
@echo off setlocal set A=0 :LOOP if %A% EQU 100 goto :END set /a A=A+1 set /a B=A%%3 set /a C=A%%5 set /a D=B+C if %D% EQU 0 goto :FB IF %B% EQU 0 goto :FIZZ IF %C% EQU 0 goto :BUZZ echo %A% goto :LOOP :FIZZ echo Fizz goto :LOOP :BUZZ echo Buzz goto :LOOP :FB echo FizzBuzz goto :LOOP :END endlocal @echo on
184 :
183 :2009/08/04(火) 20:03:18
identification division. program-id. fizzbuzz. environment division. data division. working-storage section. 77 i pic 9(3). 77 a pic 99. 01 r3 pic 9. 88 r3-zero value zero. 01 r5 pic 9. 88 r5-zero value zero. procedure division. perform varying i from 1 by 1 until i > 100 perform fizzbuzz end-perform. stop run. fizzbuzz. divide 3 into i giving a remainder r3 end-divide divide 5 into i giving a remainder r5 end-divide if r3-zero and r5-zero then display "FizzBuzz" upon console else if r3-zero and not r5-zero then display "Fizz" upon console else if r5-zero and not r3-zero then display "Buzz" upon console else display i upon console end-if.
無駄に長いなと思ったらCobolか...
SQL見た時、なんか冗長だな〜COBOLみて〜、と思った。
遊びがてら、出力が汚いのを作ってみた。後悔はしてない。(C言語) (パターン1) #include <stdio.h> #include <memory.h> int main(void) { int i = 0; char buf[900+1]; char* ptr; char* end = buf+900; *end = '\0'; for (ptr=buf;ptr<end;ptr+=9) snprintf(ptr,9,"%6d \n",i++); for (ptr=buf;ptr<end;ptr+=27) snprintf(ptr,6,"fizz "); for (ptr=buf+4;ptr<end;ptr+=45) snprintf(ptr,4,"buzz"); printf(buf); return 0; }
(パターン2) #include <stdio.h> #include <memory.h> int main(void) { //fi zz bu zz _ 1 _ 2 _ fi zz _ 4 _ bu zz _ fi zz _ 7 _ 8 _ fi zz _ bu zz _ 11 _ fi zz _ 13 _ 14 _ char* a = "243410101241013412410101241341012410101"; char* b[5] = {"00","\r\n","fi","bu","zz"}; char* p = a; while (b[0][0]<='9') { if (*p=='1') { b[0][0] += (b[0][1]-'0' + 1)/10; b[0][1] = '0' + (b[0][1]-'0'+1) % 10; } printf(b[*p++-'0']); if (!*p) p = a; } return 0; }
なんでこの問題が有名なのかイマイチわからんのだが、 重複さえ気をつければ他に別にひっかけがあるようなもんでは無いよね。
引っかけがあるように見えるので、しばらく考えるが、 実は、引っかけがないことに気付く。 これが、最大の引っかけ。
>>190-191 そもそもプログラマとしての素養を見るための問題の例として挙げられたものだから
引っかけとか特に必要ないんだよ
普通のプログラマなら2分以内で書けて当たり前という程度には簡単。
「2分」ってよく言われるけど、 「問題用紙をめくって下さい」から、「動作確認終わりました」まで、 必ずしも2分以内に終わらないよ。 特に、自分が普段はあまり使っていないような言語では。 問題文見て、面食らってる時間とか、 改行コードの出力、全パターンで共用した方がいいのかどうか思案する時間とか、 インクルード文なんだっけ、main関数の戻り値にvoid許可されてたっけとか、 Javaのクラスパスが通ってないとかw 2分以内と言ってる人は、何度も書いてるから、2分で出来るようになっただけ。
んなこたーどうでもいいんだよ
196 :
仕様書無しさん :2009/09/19(土) 14:43:36
FizzBuzz
195取られた
>>194 FizzBuzzの2分は誤訳だってよ。
#pythonのリストコンプリヘンションで遊んでみた def nvl(x,y): if x: return x; return y; fizz = (['','','fizz']*100)[0:100]; buzz = (['','','','','buzz']*100)[0:100]; num = map(lambda x:str(x),range(1,101)); print map(nvl,map(lambda x,y:x+y,fizz,buzz),num);
ちょっとだけ、悪ノリ。(C言語) #include <stdio.h> #include <memory.h> int main(void) { int i; char buf[8]; printf("<html><head><title>クソスレ</title></head><body><dl>"); for (i=1;i<=1001;i++) { char* s1, *s2, *s3, *s4; sprintf(buf,"%d",i); s2 = "blue"; s3 = " "; s4 = "投稿日: 2009/09/20(日) 23:59:59 ID:FizzBuzz"; if (i%1001==0) { s1 = "このスレッドは1000を超え(ry"; s2="green"; s4="投稿日: Over 1000 Thread"; } else if (i%15==0) { s1 = "fizzbuzz"; s3="[fizzbuzz]"; } else if (i%3==0) { s1 = "fizz"; s3="[fizz]"; } else if (i%5==0) { s1 = "buzz"; s3="[buzz]"; } else { s1 = buf; s2 = "green"; s3 = " "; } printf("<dt>%d 名前:<font color=\"%s\"><b>仕様書無しさん</b>%s</font> %s</dt> ",i,s2,s3,s4); printf("<dd style=\"padding:1em 0em\";>%s</dd>",s1); } printf("</dl></body></html>"); return 0; }
>>192 プログラマの素養が関係ないような問題で素養を見ようとする意図って何なんだろうな。
結局、元のブログ主の?話題づくりに利用されているだけな気が知る
元ネタ知らずにレスしてる香具師いたのか。
204 :
ぅゅ ◆e6.oHu1j.o :2009/09/22(火) 12:13:28
この問題って日本のものじゃないよね 海外っていうとレベル高そうにおもえるけど実はそうでもないんじゃ
PowerShellバージョンが最強だな
>>202 この問題すら解けない奴がいるって事なんじゃまいか?
>>202 たとえ時間を充分にかけても正答にたどり着けないような人が
現実にはたくさん面接に来るんだよ
素養があるかどうかを見るんではなくて
素養がまるでない人をふるい落とすための簡易的な試験という位置づけ
208 :
仕様書無しさん :2009/09/23(水) 00:23:36
Fortran90 program hoge implicit none integer :: i do i=1,200 if (mod(i,15).eq.0) then print *,'Fizz Buzz' else if (mod(i,5).eq.0) then print *,'Buzz' else if (mod(i,3).eq.0) then print *,'Fizz' else print *,i end if end do end program hoge
>>203 >>1 のリンク先すら読まない莫迦が
そんだけ沢山いるってことでしょうな。
スレタイ嫁、1嫁だけなら分かるけど、 1のリンク先まで必須となると、何か違うような気がする。 あと、何ていうか、「リンク先まで嫁」と、「2分以内」って、同じ部類のように思える。 自分の脳内ででっち上げた完璧さを、周囲の人に対して、期待している点において。 嫌味な言い方をすれば、配慮や謙虚さが足りないって言うか。
それをたらたら書いてる時間でリンク先読むのは十分可能だよな? 元ネタは採用試験の話だ、くらいはFizzBuzzより簡単にわかるよな。 配慮や謙虚さが足りないって、むしろそっちじゃないのか。 嫌味な言い方だがな。
情報の提示の仕方が悪い、 ボクちゃんは悪くない、おまえが悪い、おまえの教え方が悪い というのは、典型的なゆとり脳の主張ですw
213 :
仕様書無しさん :2009/10/19(月) 21:26:19
出来るだけ短く
ここで一応動いたよ。→
http://codepad.org/ #include <stdio.h>
#define p printf
main(){int i;for(i=1;i<=100;i++)if(!p("%s",p("%s%s",i%3?0:"Fizz",i%5?0:"Buzz")?"\n":0))p("%d\n",i);}
これはコードゴルフじゃないんだぜ。 実行環境はなし。もしコンパイルが通らない、結果が間違っていたらその場で銃殺。 というシビアな条件で最も間違いにくいコードに最高得点をあげたい。
215 :
仕様書無しさん :2009/10/19(月) 22:28:45
++++++++++f 私の個人的な意見になるけど、 Fの一文字で、FizzBuzzを出力できるようにした方が、HQ9+っぽいと思うんだけどね。
Cで書いたら緊張のあまりセミコロン忘れてあぼーんだなw
218 :
Go :2009/11/17(火) 17:06:00
package main import "fmt" func main() { for i:=1;i<101;i++ { s:=""; if i%3==0 { s+="Fizz" } if i%5==0 { s+="Buzz" } if s=="" { s=fmt.Sprintf("%d",i) } fmt.Printf(s+"¥n") } }
何度見ても気持ち悪い文法だなあ
for i in range(100): if (i % 3) == 0 and (i % 5) == 0: print u'FizzBuzz' elif (i % 3) == 0: print u'Fizz' elif (i % 5) == 0: print u'Buzz' else: print i
100.times do |n| str = String.new str = n%15==0?:fizzbuzz:n%5==0?:fizz:n%3==0?:buzz:"" print "%03d:%s\n" % [n,str] end
剰余(割り算の余り)を出すのに演算子の % 以外で計算できますか? % を忘れると大変だぞ!
223 :
仕様書無しさん :2010/04/21(水) 23:31:11
剰余 % を忘れたときに使える方法だと思う。 この問題で肝心なところは % と 「かつ」の && だな。あー恥ずかしい class TestFizBuz { public void mes() { int int3 = 0; int int5 = 0; for (int i = 1; i <= 100; i++) { if (int3 < i/3 && int5 < i/5) { System.out.println("FizzBuzz: " + i); int3 = i/3; int5 = i/5; } else if (int3 < i/3) { System.out.println("Fizz: " + i); int3 = i/3; } else if (int5 < i/5) { System.out.println("Buzz: " + i); int5 = i/5; } else { System.out.println(i); } } } public static void main(String[] args) { TestFizBuz tfb = new TestFizBuz(); tfb.mes(); } }
>>221-223 うゆw問題からしてわかってねぇwwさすが天才www
"mes"w "kard"とおんなじwwメソッドwww
226 :
仕様書無しさん :2010/04/23(金) 00:56:20
>>225 223は動作は当たっているんじゃない。
% を使用しない方法ではこれでいいんじゃない?
>>224 それってさ、漏れパスを使ったとか
正しい言い方忘れたが、「スクリプト使用のガキ」も含んででない?
Script kiddie ?
>>226 %を使う使わない以前に結果を他のコードと比べるくらいなぜできない?
数学のテストで「計算結果は違うけど式はあってますよね」とか言うクチか。
%を忘れたwという変な条件を入れたとしても、 int reminder(int divisor, int dividend) みたいな相当するメソッドを作るだろふつー。 直近の3と5の倍数を保持して商と比べるなんてせんでも。 void型のメソッドしか認めんwのなら別だけどさ。
>>229 結果は当たっているよ。書き方の問題ね。
>>1 >1から100までの数をプリントするプログラムを書け。
>ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
とあるのに3や5をプリントアウトしたらただの間違いだろ。
問題をちゃんと読んでねぇアホじゃねーか。
233 :
231 :2010/04/23(金) 15:26:12
223に感動した。 コード読んでも、何やってるのかワカランかったが、 int3, i/3, int5, i/5 の値を出力してみたら、発想の奇抜さにたまげた。
235 :
234 :2010/04/24(土) 03:33:23
233の計算テクはそのままで、変数int3,int5を取り去ったコード。 if ((i-1)/3!=i/3 && (i-1)/5!=i/5) { printf("FizzBuzz\n"); } else if ((i-1)/3!=i/3) { printf("Fizz\n"); } else if ((i-1)/5!=i/5) { printf("Buzz\n"); } else { printf("%d\n",i); }
訂正 ×233 ○223 あと、if ((i-1)/15!=i/15) でOKだ。
iが正の整数なら剰余%は除数xについてi-(int(i/x)*x)なんだから当たり前じゃん。 %を忘れてどうこうってのがどうかしてる。馬鹿?
%を忘れた人のため:その2
#include <stdio.h>
int rem3is0[16]={1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1};
int rem5is0[16]={1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1};
int compact( unsigned int n ) {
n = ( n & 0x0f0f0f0f ) + ((n
>>4 )&0x0f0f0f0f);
n = ( n & 0x00ff00ff ) + ((n
>>8 )&0x00ff00ff);
n = ( n & 0x0000ffff ) + ((n
>>16 )&0x0000ffff);
return ( n > 15 )? compact(n): n;
}
#define N 100
int main( ) {
unsigned int i;
for( i = 1; i <= N; ++i ) {
int j = compact(i);
if( rem3is0[j] & rem5is0[j] ) {
printf( "FizzBuzz " );
}
else if( rem3is0[j] ) {
printf( "Fizz " );
}
else if( rem5is0[j] ) {
printf( "Buzz " );
}
else {
printf( "%i ", i );
}
}
}
修正: "%i " → "%u "
>238の応用
その3 ifも忘れた人のため
#include <stdio.h>
char *fz[16]={"","%u ","%u ","Fizz ","%u ","Buzz ","Fizz ",
"%u ","%u ","Fizz ","Buzz ","%u ","Fizz ","%u ","%u ","FizzBuzz "};
int compact( unsigned int n ) {
n = ( n & 0x0f0f0f0f ) + ((n
>>4 )&0x0f0f0f0f);
n = ( n & 0x00ff00ff ) + ((n
>>8 )&0x00ff00ff);
n = ( n & 0x0000ffff ) + ((n
>>16 )&0x0000ffff);
return ( n > 15 )? compact(n): n;
}
#define N 100
int main( ) {
unsigned int i;
for( i = 1; i <= N; ++i )printf( fz[compact(i)],i);
}
>>240 いや、それだとこれと変わらなくて興が削がれるからだめだろ。
#include <stdio.h>
char *fz[16]={"","%u ","%u ","Fizz ","%u ","Buzz ","Fizz ",
"%u ","%u ","Fizz ","Buzz ","%u ","Fizz ","%u ","%u ","FizzBuzz "};
int main( ) {
unsigned int i;
for( i = 1; i <= 100; ++i )printf( fz[i-i/15*15],i);
}
あまり変わらんけど関数テーブル版
#include <stdio.h>
#include <stdint.h>
void fb(uint32_t x){ printf( "FizzBuzz " ); }
void f(uint32_t x){ printf( "Fizz " ); }
void b(uint32_t x){ printf( "Buzz " ); }
void n(uint32_t x){ printf( "%lu ", (unsigned long)x ); }
void (*fn[4])(uint32_t) = { n, b, f, fb };
const uint32_t FN = 0xc1241843;
unsigned int compact( uint32_t n ) {
n = ( n & 0x0f0f0f0f ) + ((n
>>4 )&0x0f0f0f0f);
n = ( n & 0x00ff00ff ) + ((n
>>8 )&0x00ff00ff);
n = ( n & 0x000000ff ) + ((n
>>16 )&0x000000ff);
n = ( n & 0x0000000f ) + ((n
>>4 )&0x0000000f);
n = ( n & 0x0000000f ) + ((n
>>4 )&0x0000000f);
return n;
}
#define N 100
int main( ) {
for( uint32_t i = 1; i <= N; ++i ) {
(*fn[(FN>>compact(i)*2)&3])(i);
}
}
これはすごいね。 15回に1回ごとに3と5の倍数が来ることを想定して配列に代入しているという 理解でいいのかな。 class FizzBuzz { static final String strFizBuz[] = {"","","Fizz ","","Buzz ","Fizz ", "","","Fizz ","Buzz ","","Fizz ","","","FizzBuzz "}; public static void main(String[] args) { int count = 0; for (int i = 1; i <= 100; i++) { if (strFizBuz[count].equals("")) { System.out.println(i); count++; } else if (strFizBuz[count].equals("Fizz ") || strFizBuz[count].equals("Buzz ")) { System.out.println(strFizBuz[count]); count++; } else if (strFizBuz[count].equals("FizzBuzz ")) { System.out.println(strFizBuz[count]); count = 0; } } } } 簡単にするとこれでもOKでしょ
>243 >15回に1回ごとに3と5の倍数が来ることを想定して配列に代入しているという >理解でいいのかな。 全然違う。 関数compactが15で割った余りを(%演算子無しで)計算しているのがポイント。 下から4bitづつに区切って(まぁ上からでも同じだけど)、それを全部足したものと元の値では 15で割った余りが同じになることを利用している。 なぜそうなるかはちょっと頭をしぼって考えてみな
10進数でmod 9が各桁の値の和に等しいってのと同じ話か。 16進数で考えてみようと思ったことが無かったぜ。
明らかに%演算子より知名度低そうな知識だな…
247 :
243 :2010/04/25(日) 09:43:48
>>225 おれが過去にかいたコードを描いたときにかんがえてた事を
予想すると、お前のその意味不明なレスもなんとなくわかるよ
おれが適当に描いた部分は、 たとえ、プログラミング知らない奴でも修正できそうなレベルだ
っていうところまではわかるか??
だれにでも解ける場所とか、自分が過去に解いた場所は適当になる
それがuy。
その適当具合は、常軌を逸しているかもしれない
問題すら適当に読むか読まないし、コンパイルチェックもしないで2chに貼り付けたりもする
たとえそれが間違っていてもどうでもいいやという気分になる
まとめると:
おれは忙しいから
無駄なことに時間は使いたくない
>>246 mod 9 = 0 の場合に限れば、「全桁の数字を足すと9の倍数になる数は9の倍数」
っていう中学生でも知ってる話だぜ。
言い訳にもなってねえ 流石屑ニート様
え・・・、って思った よほどのヴぁかか、全然初心者レベルだろお前
頭大丈夫?
さっさと追いつけよのろま
職歴なしニートにおいつくのはもう無理なんで。。
using System; public class FizzBuzzFormat : IFormatProvider, ICustomFormatter { private static char[] Z = new char[] {'Z'}; public object GetFormat(Type formatType) { return formatType == typeof(ICustomFormatter) ? this : null; } public string Format(string format, object arg, IFormatProvider provider) { if (format == null) return String.Format("{0}", arg); if (format.StartsWith("Z")) { int n = (int) arg; bool m3 = n % 3 == 0, m5 = n % 5 == 0; return m3 ? (m5 ? "FizzBuzz" : "Fizz") : (m5 ? "Buzz" : n.ToString()); } if (arg is IFormattable) return ((IFormattable)arg).ToString(format, provider); return arg.ToString(); } } public class FizzBuzz { static void Main() { var fbf = new FizzBuzzFormat(); for (var i = 1; i <= 100; i++) Console.WriteLine(String.Format(fbf, "{0:Z}", i)); } }
256 :
仕様書無しさん :2010/05/23(日) 02:47:37
for i=1,100 do s ="" if( i % 3 == 0 )then s="Fizz" end if( i % 5 == 0 )then s=s.."Buzz" end if( s == "" )then s=i end print( s ) end 安直だなぁ、自分。
257 :
仕様書無しさん :2010/05/23(日) 04:13:08
>>256 その方法が一番だよ
シンプルイズベスト
業務のプログラムであんまり凝ったコード書かれると困る
割り算や余剰を使うと計算コストが高い。 平凡にカウンタを使うほうが早い。 正しく解くだけじゃなくて高速性を考えないといけないのにわかってないアホ多すぎ
259 :
仕様書無しさん :2010/05/26(水) 20:40:51
確かにそうだけど 今の時代はI/O関係なければそんなに速度なんて変わらないから ぱっと見でわかりやすいほうがいいだろ いつの時代だよ
260 :
仕様書無しさん :2010/05/26(水) 22:45:50
using System; class FizzBuzz { static void Main() { var a = new[] { new { Multiple = 3, Indication = "Fizz" }, new { Multiple = 5, Indication = "Buzz" } }; int[] c = new int[a.Length]; for (int i = 1; i <= 100; i++) { bool fb = false; for (int j = 0; j < a.Length; j++) { if (++c[j] == a[j].Multiple) { Console.Write(a[j].Indication); c[j] = 0; fb = true; } } Console.WriteLine(fb ? "" : i.ToString()); } } }
>>258 その労力は、検索アルゴリズムの選択とか、枝刈りとか、効果出やすい所につぎこめよw
値を記憶するのは、どうしようもなく高速化最優先の場合か、せいぜい、三角関数のテーブル化あたりだね。
Python、短絡評価とジェネレータ内包表記で。 def fizz(x): return x % 3 == 0 and 'Fizz' or '' def buzz(x): return x % 5 == 0 and 'Buzz' or '' def fizzbuzz(x): return ''.join((fizz(x), buzz(x))) or str(x) print '\n'.join(fizzbuzz(x) for x in xrange(1, 101))
Pythonでとりあえず標準的に書いてみる 見れば分かるとおり、無限ループするよ i=0 while True: print i, if i%3==0: print "Fizz", if i%5== 0: print "Buzz", print '\n' i=i+1
あれ?スペースが消えた あ、全角じゃないとだめなのか スレ汚ししてすいません
>>263-264 こう書きたかったんだろうけど、iの値が常に表示されてしまう
i=0
while True:
print i,
if i%3==0:
print "Fizz",
if i%5== 0:
print "Buzz",
print '\n'
i=i+1
[1から100まで]ってのは仕様だからそれを満たさないと失格だよぅ
すんません for i in range(1,100): if i%3==0: print("Fizz",end='') if i%5==0: print("Buzz",end='') print('\n') i=i+1 Python3で書き直し。
>>267 問題文を再確認して下さい。
時間がかかってもいいので、落ち着いて。
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz …
#include <stdio.h> #include <stdlib.h> int fizzbuzz(int pos) { if (pos%15==0) { printf("振り出しに戻る\n"); return 1; } else if (pos%5==0) { printf("コンビニまでパシり\n"); } else if (pos%3==0) { printf("服を1枚脱ぐ\n"); } else { printf("%d\n",pos); } return pos; } int main(void) { int pos = 1, saikoro; randomize(); while (pos<100) { saikoro = rand() % 6 + 1; printf("現在位置%d-> %d が出ました\n",pos,saikoro); pos = fizzbuzz(pos+saikoro); } printf("ゴール"); return 0; }
for i in range(1,100): if i%3==0: print("Fizz",end='') if i%5==0: print("Buzz",end='') i=i+1 次はLuaでやろうかな
ミス for i in range(1,100): print(i,end=' ') if i%3==0: print("Fizz",end='') if i%5==0: print("Buzz",end='') print(' ') i=i+1 こうかな?
それも駄目です。
273 :
仕様書無しさん :2010/06/02(水) 03:23:50
perl言語で $c = 0; while ($c < 100){ $c++; print $c . "\n"; if (($c % 3) == 0){print " fizz\n" } if (($c % 5) == 0){print " bizz\n" } }
274 :
仕様書無しさん :2010/06/02(水) 03:36:33
アウトプットを修正 while ($c < 100){ $f = 0; $c++; unless (($c % 15) == 0 ){ if (($c % 3 ) == 0 ) {print "fizz\n"; $f = 1 } if (($c % 5 ) == 0 ) {print "buzz\n"; $f = 1 } }else { print "fizzbuzz\n"; $f = 1 } if ($f == 0 ) { print $c . "\n" } }
275 :
仕様書無しさん :2010/06/02(水) 03:42:32
274 2chの雑談程度で1分程度で書くとちょっと美しさにかけるな。 もう少し美しさを考えてみる
てーか>1読んでから書けよ馬鹿
277 :
仕様書無しさん :2010/06/02(水) 03:58:46
>>276 何が間違ってる?1読んで正しい結果出てると思うんだけど。
278 :
仕様書無しさん :2010/06/02(水) 04:01:21
大文字の事? while ($c < 100){ $f = 0; $c++; unless (($c % 15) == 0 ){ if (($c % 3 ) == 0 ) {print "Fizz\n"; $f = 1 } if (($c % 5 ) == 0 ) {print "Buzz\n"; $f = 1 } }else { print "FizzBuzz\n"; $f = 1 } if ($f == 0 ) { print $c . "\n" } }
while ($c < 100){ $f = 0; $c++; if (($c % 3 ) == 0 ) {print "Fizz"; $f = 1 } if (($c % 5 ) == 0 ) {print "Buzz"; $f = 1 } if ($f == 0 ) { print $c } print "¥n" }
280 :
仕様書無しさん :2010/06/02(水) 04:11:15
>>279 ちょっと綺麗に手直ししてくれてサンクス
#include<stdio.h> int main(void){ int i; for(i=1;i<=100;i++){ if(i%15 == 0){ printf("FizzBuzz "); } else if(i%3 == 0){ printf("Fizz "); } else if(i%5 == 0){ printf("Buzz "); } else{ printf("%d ",i); } } return 0; }
282 :
仕様書無しさん :2010/06/02(水) 15:49:55
print" ",($_%3?"":"Fizz").($_%5?"":"Buzz")||$_ for 1..100 最短記録48byteとかどういうことなの…
while条件にi<100とか書いてる奴はクビ range(1,100)とか書いてる奴もクビ
>>282 print+(Fizz)[$_%3].(Buzz)[$_%5]||$_,$/for 1..100
286 :
仕様書無しさん :2010/06/02(水) 17:48:41
>>284 それって、
1位 Bash, 2位 Perl(ver6), 3位 z80 (番外…GolfScript, HQ9F+)
のような気がする。
COBOLが、Brainf*ckやWhitespaceのようなネタ言語より、更に下…。
まあ、出力結果の414バイトよりは、小さくなるけど。
…出力結果をlha圧縮したら、202バイトになった。 コマンド「lhasa a.lzh」と合わせても、213バイト。 つまり、出力結果>>>>>Esoteric(ネタ言語)>>>>>COBOL
いや、COBOLってもともと冗長なの目的な言語だし。 なにいってんのおまいら。
>>286 あくまでもここの仕様でのランキングだから、実質とか考える意味は無い
元々ここのランク対象外なHQ9F+を持ち出す意味も無い
COBOLが冗長なのも当たり前っちゃ当たり前
Bashっつっても実質ほぼGNU sedだから環境依存だろとか、言い出したらきりがない
つーか言語の優劣ランキングと勘違いしてる奴が痛い
>>288 「おまいら」っていうか、俺一人。(286=287)
この板、ID出ないんだね。
COBOLネタで釣れると思ったら、極めて常識的な意見ばかりで、がっかりだ。
今さらCOBOLなんて知らない世代のほうが多いのかもよ
「釣れると思ったら」は前置と後置で全く印象が変わるな
ご迷惑おかけします、
>>271 です。
これでどうですか、ダメですか?
def fizzbuzz():
i=1
text=""
while i<=100:
if i%3==0:
text += "Fizz"
if i%5==0:
text += "Buzz"
if text=="":
yield i
else:
yield text
i+=1
text=""
for a in fizzbuzz():
print a,
おめでとうございます
ジェネレータとか使って関数分けてるのが半端に汎用的で無駄な気もするけど、似た戦略で書くなら、 def fizzbuzz(nums=range(1,101)): for i in nums: s = "" if i % 3 == 0: s += "Fizz" if i % 5 == 0: s += "Buzz" yield i if s == "" else s for s in fizzbuzz(): print s こんな感じにするかなぁ俺だと。さらに悪乗りするなら、 def general_fizzbuzz(nums, *fv): for i in nums: s = "" for f, v in fv: if f(i): s += v yield str(i) if s == "" else s def fizzbuzz(nums=range(1,101)): return general_fizzbuzz(nums, (lambda i: i % 3 == 0, "Fizz"), (lambda i: i % 5 == 0, "Buzz"), ) for s in fizzbuzz(): print s
100が変動することも踏まえて定数にすべきだよな
for s in fizzbuzz(itertools.count(-100000)): print s とかに変えたりな
100は所詮デフォルトパラメータだから埋め込んでも問題なくね
301 :
仕様書無しさん :2010/06/06(日) 01:21:02
for i in range(1,101): script = i if (i%3==0)and(i%5==0): script = "FizzBuzz" elif i%3==0: script = "Fizz" elif i%5==0: script = "Buzz" print script
pythonはコピペに向かない
プログラマーなら「 変換プログラム」作れるよな?
305 :
仕様書無しさん :2010/06/07(月) 23:07:35
俺は超高度なセキュリティ対策用データコンバータープログラム作れるぜ。 これによってXSSという世界的脅威を打破できる。
dc [sg[]]sx1[ddd3%d[Fizz]r0<xnr5%d[Buzz]r0<xn*0=xpsg1+dd101>M]dsMx
あー、Cって文字列直接入れられなかったんだorz。ずっとテスターでorz状態だ c=1; fcint=3; bcint=5; max = 100; fc=fcint; bc=bcint; for (c=1; c>max; c++,fc--,bc--){ f = ""; b = ""; if (fc==1){ f = "fuzz"; fc = fcint; } if (bc==1){ b = "buzz"; bc = bcint; } if (f=="" && b==""){ printf(c) } else{ printf(f + b) } }
これは酷い…。
#include <stdio.h> //printf使うには、インクルード文が必要 #include <string.h> int main(void) { //main関数が必要 int c=1; //型の宣言が必要 int fcint=3 - 1; //同上 + 下のほうでfc==0に書き換えた分、1をマイナス (※最初に表示する数が1だから) int bcint=5 - 1; //同上 + 下のほうでbc==0に書き換えた分、1をマイナス int max = 100; //同上 int fc=fcint; //同上 int bc=bcint; //同上 for (c=1; c<=max; c++,fc--,bc--){ // c<=maxにしないとループ回らないよ!! char* f = ""; //型の宣言が必要(C++ならstring型を使うこと) char* b = ""; if (fc==0){ //3つおきじゃなくて2つおきになってたよ!! f = "fizz"; //fuzzじゃなくってfizz(笑) fc = fcint + 1; } if (bc==0){ //5つおきじゃなくて4つおきになってたよ!! b = "buzz"; bc = bcint + 1; } if (strcmp(f,"")==0 && strcmp(b,"")==0){ //ポインタと空文字列を比較しないこと(C++なら元のままでOK) printf("%d",c); //数は直接printfできない } else{ printf(f); printf(b); //文字列型ではないので、足し算しないこと(C++なら元のままでOK) } printf("\n"); //できれば、改行すること } return 0; //main関数の戻り値 }
ごめん、 fcint=3, bcint=5, fc=fcint-1, bc=bcint-1で、 ループ内が、fc=fcint, bc=bcintだね。 上のでも正常に動くけど。
311 :
307 :2010/07/29(木) 19:09:51
>>309 わお。訂正していただけて、マジ参考になりますthx
つか俺は文法勉強しなおしだー・・・
main(i){for(;i-101;puts(i++%5?"":"Buzz")){printf(i%3?i%5:"%d":0:"Fizz");}
313 :
仕様書無しさん :2010/09/20(月) 20:33:16
print 1 print 2 print Fizz print 4 print Buzz print Fizz ... end.
とりあえず動かして見ろ
バグってるって話だろ。 main(i){for(;i-101;puts(i++%5?"":"Buzz")){printf(i%3?i%5?"%d":"Buzz":"Fizz",i);}}
あ、いけね俺も失敗してら。結果は見た目正常風だとは思うが。
318 :
仕様書無しさん :2010/10/22(金) 13:04:46
FizzBuzzを極めてもう2年ほどたちます。 そろそろ採用してくれる会社を紹介してください。
条件@ もっとも安く仕上げよ 条件A 運用コストは電源を入れてから1秒あたり1ドルかかる システムは以下の性能 1. キー入力は1入力あたり1秒かかる shiftキー等の押下・離放もカウントする 2. 文字入力は1文字あたり1ドルかかる 3. プログラム入力後、コンパイル・実行開始までの秒数はカウントしない 4. 実行は1行表示ごとに1秒かかる。表示した後同じ行に上書き表示 するようなものは、上書きの度に1秒かかる 5. 100行目(Buzz) 表示完了時までをコスト計算する
Webプログラムじゃないのに{}を省略する理由はなんだろうか? 俺が昔読んだ本では{}は省略するなとあったけど 流行かな?
>>319 条件が曖昧すぎて、パズルとして成り立ってないよ
プロ奴隷使えば安くなるんじゃねw
>>320 宗教論争
たしかコンパイルしたら同じだから人間が読みやすいように 括弧でわかりやすく書くとあったけど。 そういう俺もめんどくさいとき括弧を省略するけど。
Cのifとかの話なのかなぁ LinuxカーネルやGnuみたいにメジャーなところでも、ifの{}は複文じゃなければ必ず 省略すること(ネストした時を除く)というルールを採用してる超大規模コードも あるのよ オフサイドルールで成り立っちゃってる言語もあるくらいだから、本当は言うほどの 危険は無いのかもしれん、と思うようになってからは、省略派に鞍替えしたというか、 元々省略してた(それでバグった記憶も無かった)ので省略派に戻ったというか
↑「幅優先探索」とか、答え書かないでよ…。 でも、単純な幅優先なら、計算量爆発するよね。 25分〜3時間か。FizzBuzz位ならともかく、やってらんない。ギブアップだわ。寝る。
326 :
325 :2011/01/18(火) 02:37:27
ゴメン、枝切りすれば、それなりに実用的な速度にはなりそうではあるね。(全部スペースとかでない限り。) まぁ、なんか面倒臭そうなので、プライド捨てるわ。 実行時間無視の書き捨てコードとかじゃ、ダメ扱いされそうだし。
327 :
325 :2011/01/18(火) 03:48:46
大学は情報系でないので、力技。(全てのセルに、最初のポイントからの位置を書き込み。) 予想通り、デバッグで時間取られる。 そもそも、やる気ないから、コードは汚いし。 バカバカしくなってきたから、中断する。 「まともなプログラマーなら〜」って言葉に、どうしても反応してしまう。 挑発に乗っちゃうクセを直さないとね。
328 :
325 :2011/01/18(火) 03:54:46
何かイライラする。 さらっと数行で書けるものならともかく、意味の無いコード、1時間も書かされるとちょっと。 別に、芸のある出題でもないし。 スルーして、フリーソフトのメンテしとくんだったと後悔。
329 :
325 :2011/01/18(火) 03:56:46
一応、Cで、セルに番号振るところまで書いた。 デバッグ含め、1時間半か。 ちょっと無能かもしれんが、馬鹿にするなら、馬鹿にしてくれ。
330 :
325 :2011/01/18(火) 04:44:16
あ、出来た。
嫌々やるのやめて、コード整理したら、出来た。
100ステップって、ちょっと簡単に書き捨てられる量じゃない。
頭でアルゴリズム簡単に思いついても、デバッグに時間がかかるし。
「プログラマーなら出来なきゃ困る」なら、実際に書かなければならないんだから、時間のことも考えて欲しい。
あと、ブログで示されていたアルゴリズム、文系には辛いよ。
こっち系だとは思ったけど、昔、本で名前知った程度だから、ググルや参考書なしでは無理。力技しかなかった。
まあ、
>>324 は、スルー力検定だったのだなw
リアル厨房の時に、マイクロマウスでやったな。 8bitマイコンでモータやらセンサやらの面倒を見つつ、 迷路脱出させてた。 出口が隅じゃなく、内部に有ると泣いたw
332 :
325 :2011/01/18(火) 15:33:00
>>331 あれって、総当り方式じゃん。左側か右側かの壁伝ってくんだっけ?
>>324 の問題って、なんか、「求職者を見下したい」感がヒシヒシ伝わってきて嫌。
プログラムって、もっと、大らかに、何日もかけて、じっくり楽しむべきものなんだよね。
3時間とか、時間区切ってコーディングするのは、仕事でもない限り、邪道。
マイコンロボを試行錯誤して動かしたりとか、何日も考えてパズルの最適アルゴリズムを見出したりとか。
>あれって、総当り方式じゃん。左側か右側かの壁伝ってくんだっけ? だから、それだと出口が内部に有ると駄目だし、ループしてる柱みたいな 場所が有ると永久ループ。 一応、自分が通った経路を記憶しておいてマッピングしながら移動する のだが、タイヤのスリップとかセンサの誤検知とか有るので、信頼度の 重み付けしながらファジーにマッピングして行く。 汚部屋と言う名の迷路を掃除するロボット、ルンバも作れなさそうだな。 中国製ランダムウォークのパチ物に負けるぞ。
>>325 幅優先探索の場合、計算時間より計算空間の方が先に破綻するんじゃ
ないかな。特にRAMの容量に限りの有る組込み制御の場合。
8bit時代は、オセロとか将棋も深さ優先探索してた。例外は森田和郎
ぐらいで、これもSSS*探索とαβ探索のハイブリッド。
なつかしい話題発見。 全セル分のワークと若干のキューが確保できればいいんだから そんなにメモリ圧迫するってほどでもないような。 といっても対象フィールドの広さにもよるだろうが、 例の出題程度の広さだったら破綻の心配はまずしなくていいでしょう。 各セルごとにゴール、スタート、障害物、未踏地、 既に歩いた地(「来た方向」の保持兼用)の区別がつけばいいので ワークは各セルごとに1バイト(最低4ビット)あれば十分足りるし。 でも深さ優先探索しか知らなかった(書いたことがなかった)ので 試しに解いてみた時にはちょっと手こずってしまった。 ちなみに件の例題では深さ優先探索でも実用時間内に解けてしまう。 これって結構ワナかもな、と思った。
空気読まずにCLOSでfizzbuzz, (defgeneric fbzz (%3 %5 n) (:method (%3 %5 n) (print n)) (:method ((%3 fixnum) %5 n) (print 'fizz)) (:method (%3 (%5 fixnum) n) (print 'buzz)) (:method ((%3 fixnum) (%5 fixnum) n) (print 'fizzbuzz))) (defun fizz-buzz (n) (fbzz (/ n 3) (/ n 5) n)) (loop for i from 1 to 100 do (fizz-buzz i))
プログラミング始めて3週間です、どうですか? #include <stdio.h> int main(void) { int a; for (a = 1; a <= 100; a++) { if (a % 3 == 0 && a % 5 == 0) printf ("FizzBuzz\n"); else if (a % 3 == 0) printf("Fizz\n"); else if (a % 5 == 0) printf("Buzz\n"); else printf("%d\n", a); } return 0; }
どうですかって言われても まぁいいんじゃね あえて言えば平凡すぎて面白みがなくてつまらん
340 :
仕様書無しさん :2011/06/11(土) 03:43:41.34
いい機会なんで?演算子を使ってみよう
まいど = まいど?まいどぉ:まいどぅ
こうかな int main(void){ char *s[4] = { " ","Fizz","Buzz","FizzBuzz"}; int i; for (i=1;1<=100;i++){ sprintf(s[0],"%d",i) puts(s[(i%5==0)<<1+(i%3==0)]); } } 確認してないからわからんがかなり速の筈 sprintf部分を自分で書けばもっと速くなる
こうすればもっと早いな int main(void){ char *s[4] = { " ","Fizz","Buzz","FizzBuzz"}; int i, j; for (i=1;1<=100;i++){ j=(i%5==0)<<1+(i%3==0); if(j==0) sprintf(s[0],"%d",i); puts(s[j]); } }
無限ループするじゃん。
1<=100はともかく、<<演算子の優先順位が+より低いのにハマってるよ。 *2にしても多分同じオブジェクトが出るとは思うけどね。 ↓結果 int main(void){ char *s[4] = { " %d¥n","Fizz¥n","Buzz¥n","FizzBuzz¥n"}; int i; for (i=1;i<=100;i++)printf(s[(!(i%5)<<1)+!(i%3)],i); }
確認してないからわからんがかなり速の筈
Link:
http://codepad.org/OUmFv01u int main(void){
char *s[4] = { " ","Fizz","Buzz","FizzBuzz"};
int i;
for (i=1;1<=100;i++){
sprintf(s[0],"%d",i)
puts(s[(i%5==0)<<1+(i%3==0)]);
}
}
In function 'main':
Line 6: error: expected ';' before 'puts'
Link:
http://codepad.org/LsWu5lBF int main(void){
char *s[4] = { " ","Fizz","Buzz","FizzBuzz"};
int i, j;
for (i=1;1<=100;i++){
j=(i%5==0)<<1+(i%3==0);
if(j==0)
sprintf(s[0],"%d",i);
puts(s[j]);
}
}
Output:
Segmentation fault
FizzBuzzはできて当たり前、がんばるもんじゃないんだけどな。 「どうだっ」みたいな人が会社にいて困った。
int main(void){ char *p, c[] = " "; char *s[] = { "","Fizz","Buzz","FizzBuzz"}; int i, j, k; s[0] = c; for (i=1;i<=100;i++){ j = ((i%5 == 0)<<1) + (i%3 == 0); if(j==0) { p = c; k = i; if(k >= 100) { *p++ =k/100 +'0'; k =k%100; } if(k >= 10) { *p++ =k/10 +'0'; k =k%10; } *p++ =k +'0'; *p = NULL; } puts(s[j]); } return 0; } 動くようにするとこうだな sprintfはよくわからんのではずしたわ
平凡 use strict ; my $m3 = 3 ; my $m5 = 5 ; for( my $n = 1 ; $n <= 100 ; ++$n ) { if( $m3 == $n ) { $m3 += 3 ; if( $m5 == $n ) { $m5 += 5 ; print STDOUT "FizzBuzz\n" ; } else { print STDOUT "Fizz\n" ; } next ; } if( $m5 == $n ) { $m5 += 5 ; print STDOUT "Buzz\n" ; next ; } print STDOUT $n, "\n" ; } exit(0) ; __END__
1.可変性 このプログラムが実用になった場合、標準出力以外のものに出すよう変更の必要があると思われるが、簡単にできるよう考慮されているか 倍数が3のみで5なしになったら?逆に両方残したまま7が増えたら?条件変わってもすぐに変更できるか 2.動作速度 十分速いかあるいは速度アップの必要が生じた場合、どこをいじればよいか?具体的に内部でどういう動作が 行われているかわかっているか 等をワシなら気にするな 最初黙っててできた後から上記のような質問してもすぐに対応したら、かなりできる奴だと思うわ
いや、そもそも「かなりできる」奴か見るためのテストじゃないし。 がんばるもんじゃないったらスレ終わりじゃん。ここマ板だし。 こんな書き方もある、ってお遊びだよ?言わせんな恥ずかしいw
♪フィズバズフィズバズよよいがよい ♪フィズバズフィズバズどどんがどん ♪三の倍数の時はフィズ ♪五の倍数の時はバズ ♪三と五の三と五の ♪公倍数ではフィズバズ印字 ♪フィズバズ音頭でどどんがどん そこのズブズブの日本人のあなた 自然にメロディが浮かんで来たでしょ
メタでかけよ
メタと付く言語はMLとmetafontしか知らんな…
メタで書けば3や5プリントしてもいいのかw
haskellとcで!!と思ったら、すでに書かれてた。。。Orz haskellの内包表記で書けないか考えてみる
using System; class FizzBuzz { static void Main() { for (var n = 1; n <= 100; n++) { var f = (n % 3 == 0 ? "Fizz" : "") + (n % 5 == 0 ? "Buzz" : ""); Console.WriteLine(f == "" ? "{0}" : f, n); } } }
これがどう問題なのか
誰か詳しく教えてくれ
913 :名無しさん@12周年 :sage :2011/07/02(土) 21:53:57.61 ID:vEYqWa5o0
>>871 アメリカで例えると
オバマ大統領がアルカイダにいる、ビンラディンの家族に資金援助していたという事で騒ぎになってる。
オバマがこっそり9.11実行犯の釈放嘆願書に署名
↓
オバマ「私ははめられた!!うっかり署名してしまった! 私は卑怯で残忍なテロリストを絶対許さない!!」
↓
オバマはイスラム原理主義の団体から多額の寄付を受け取っていた←追加分
↓
オバマがこっそりビンラディンの家族に毎年、計6250万円献金
↓
クリントンもこっそりビンラディンの家族に1000万円献金 ←ここが鳩山分★
↓
アメリカのメディアは全く報じず
ねーよwww
repeat 99 mes n+cnt if n\15=0 : mes "FizzBuzz": else { if n\3=0 : mes "Fizz" if n\5=0 : mes "Buzz" } loop ;未RUN
ホットスーププロセッサなら for n,1,100:s="":if n\3=0{s="Fizz"}if n\5=0{s+"Buzz"}if s=""{s=n}mes s:next
using System; class FizzBuzz { static void Main() { int m3 = 0, m5 = 0; for (int i = 1; i <= 100; i++) { if (++m3 == 3) { Console.Write("Fizz"); m3 = 0; } if (++m5 == 5) { Console.Write("Buzz"); m5 = 0; } if (m3 != 0 && m5 != 0) Console.WriteLine(i); else Console.WriteLine(); } } }
365 :
362 :2011/07/21(木) 23:31:27.81
クソコードを書きたくなったから書いてみる print ':'.join('FizzBuzz' if n % 15 == 0 else 'Fizz' if n % 3 == 0 else 'Buzz' if n % 5 == 0 else str(n) for n in xrange(1, 101))
\nに直すの忘れてたが多分どうでもいいな
368 :
仕様書無しさん :2011/08/07(日) 04:17:05.04
#include <stdio.h> main(void){ int i = 0,flag = 0; while(i < 101){ if(i % 3 == 0){ printf("Fizz"); flag = 1; } if(i % 5 == 0){ printf("Buzz"); flag = 1; } if(flag == 1){ printf("%d\n",i); }else{ printf("\n"); } flag = 0; i ++; } } 完全独学+初心者+ゲームしか作った事ねぇ・・・ 俺ダメダメかのぉ?orz
369 :
仕様書無しさん :2011/08/07(日) 04:20:51.13
見返したら色々間違えてる。なんかカオス。 俺赤面。こんな時間に眠い目こするからいけなかったんだ(言い訳 もう寝る。お休み
本物のマなら、寝ずにデバッグする。
真のマなら、寝て起きてからデバッグする。
俺ぐらいになると寝てる間にデバッグするね
>>368 関数の型をうろ覚えで済ますな、ぐぐれ
ループの範囲が1から100までなんだから、素直に1と100をコードに入れられるならそうした方が見やすい
つーかループ変数の初期化とか更新とかはforを使えばもっと見やすいし、見やすければバグりにくい
最近のC/C++のforならスコープも付くしな
375 :
仕様書無しさん :2011/08/25(木) 17:49:38.05
>>352 #include <stdio.h>
int disp(int num, int flag, int sizeofarray, char *s[] ) {
if (flag == sizeofarray-1)
printf("%d\n", num) ;
else
printf("%s\n",s[flag]) ;
return 0;
}
376 :
仕様書無しさん :2011/08/25(木) 17:52:39.16
(続き) int main(void) { int num1 = 1 ; int num2 = 100 ; int sizeofarray = 4 ; int a[] = {15,5,3,1} ; char *s[] = { "FizzBuzz","Buzz","Fizz"," "}; int i,j ; for (i = num1 ; i <= num2 ; i++) { for (j = 0 ; j < sizeofarray ; j++){ if (i % a[j] == 0 ) { break ; } } disp(i,j,sizeofarray,*s[]) ; } return 0; }
377 :
仕様書無しさん :2011/08/25(木) 17:58:22.94
>>352 1 可変性
標準出力以外に出力する必要が生じたときは、disp()を修正する。
また、項目を追加する必要が生じたときは、変数の初期値を変える。
2 実行速度
可変性を重視すると、その分実行速度が落ちる。
>>375-376 まで行くと、可変性を無駄に重視しすぎだろ
要求が変更されたら、コードを書き換えて対応するのは当たり前なんだから、ほどほどに書き換えが
やりやすくなってりゃいいのよ
実行効率どころか可読性まで大きく落として、まだ見ぬ要求変更の可能性に幅広く対応するのは無駄
379 :
仕様書無しさん :2011/08/26(金) 15:09:14.82
ユーザー様から、仕様の大幅変更の要求が来た。 3で割り切れたときはFizz、5で割り切れたときはBuzz、 3と5で割り切れたときはFizzBuzzでいいんだけど、 それに加えて、7のときはGizz、13のときはKizz、 3と7のときはFizzGizz、3と13のときはFizzKizz、 5と7のときはBuzzGizz、5と13のときはBuzzKizz、 7と13のときはGizzKizzだ。 それから、計算の範囲は、1から100ではなく、100から1000までね。 修正作業をすぐにやってくれ。締め切りは明日ね。
380 :
仕様書無しさん :2011/08/26(金) 15:17:48.71
int num1 = 100 ; int num2 = 1000 ; int sizeofarray = 11 ; int a[] = {91,65,39,35,21,15,13,7,5,3,1} ; char *s[] = { "GizzKizz","BuzzKizz","FizzKizz","BuzzGizz","FizzGizz","FizzBuzz","Kizz","Gizz","Buzz","Fizz"," "}; よかった。 実行効率どころか可読性まで大きく犠牲にして、 まだ見ぬ要求変更の可能性に幅広く対応したコードを書いておいて…
そんなピンポイントな仕変出す客おるかいw
105(3,5,7で割れる)とかどうするんだろ、って思ったけどたぶんBuzzGizzなんだろうなぁ 直接"FizzBuzz"とか書かず、割れた数から出力すれば楽だと思ったんだが、そうするとFizzBuzzGizzになっちゃうんだよなぁ Fizz,Buzz,…の数だけフラグ用意して、立てたり立てなかったりしつつ、その後3本以上になったら小さいほうを折って…って面倒だわ
その前にギャラの話をしようじゃないか…
つーかその程度の変更なら、丸々書き換えても30分も要らんだろw
面倒なだけで興味をひかないネタだな
こういうところにもその人のスキルって出るよな
よって
>>379 は低スキルのバカグラマー
3で割り切れる時は3倍、5で割り切れる時は5倍にして表示してね、という簡単な変更要求が来た途端、 可変性が高いつもりでただ重いだけの無駄コードと化すしな
可読性が落ちてることが一番問題じゃね?
この程度の規模のコードで、コードの再利用を考慮しすぎるのはムダ。
仕様変更に伴って書き直した方が早い。
>>1 のリンク先には
> ちゃんとしたプログラマであれば、これを実行するプログラムを
> 2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい?
> コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。
> 自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。
とある。
2分とかからずに書き出せる程度の規模のコードで再利用とかムダムダ。
仕様変更があったら数分かけて書き直せ。
int sizeofarray = sizeof(a) / sizeof(a[0]);
くらい書け(もちろん宣言の順序も入れ替えて)、と思ったけど、どっちにしろ配列サイズが一致しないバグ
を抱える可能性が気持ち悪いから、本気でやるなら三次元配列かstruct/classの配列にすべきか
あと、末尾のダミー文字列が気持ち悪すぎるけど、これ無くても鼻から悪魔出ないよね?
でも実際問題としては
>>389 に完全同意
unsignedも付けろ
>>391 追加料金が1人月発生しますが良いですか?
さあ、忘れたころにやってくる。
394 :
仕様書無しさん :2012/02/12(日) 22:03:06.96
ひよこグミを参考にしながらOpenCOBOLでショートコーディングに挑戦してみました IDENTIFICATION DIVISION. PROGRAM-ID. FIZZBUZZ. DATA DIVISION. WORKING-STORAGE SECTION. 01 N PIC 999. PROCEDURE DIVISION. RU-PU. ADD 1 TO N IF 0 = N(3:) OR 5 = N(3:) IF N = N / 3 * 3 DISPLAY "FizzBuzz" ELSE DISPLAY "Buzz" END-IF ELSE IF N = N / 3 * 3 DISPLAY "Fizz" ELSE DISPLAY N(3 - 0 ^ (9 / N):) END-IF END-IF IF N < 100 GO RU-PU END-IF STOP RUN.
RU-PU. がいいね。
396 :
仕様書無しさん :2012/02/14(火) 01:26:49.30
これでいいのかな?VB.net Dim fizz As String = "Fizz" Dim buzz As String = "Buzz" Dim i As Integer For i = 1 To 100 Dim fl As Boolean = True If i Mod 3 = 0 Then rtAnswer.Text &= fizz fl = False End If If i Mod 5 = 0 Then rtAnswer.Text &= buzz fl = False End If If fl Then rtAnswer.Text &= i End If rtAnswer.Text &= " " If i Mod 10 = 0 Then rtAnswer.Text &= vbCrLf End If Next
>If i Mod 10 = 0 Then ???
398 :
仕様書無しさん :2012/02/14(火) 21:31:53.79
>>397 10個ごとに改行入れるってことだろ?見やすくするために
引用のおっさんここにもいるのか
なんだ 引用のおっさん て?
FizzBuzzクイズ 1.fizz.buzz #=> 1 3.fizz.buzz #=> "Fizz" 5.fizz.buzz #=> "Buzz" 15.fizz.buzz #=> "FizzBuzz" となるようなメソッドfizz、buzzは定義可能か? 可能である場合、同様にgizzを追加定義し、 7.fizz.buzz.gizz #=> "Gizz" 21.fizz.buzz.gizz #=> "FizzGizz" 35.fizz.buzz.gizz #=> "BuzzGizz" 105.fizz.buzz.gizz #=> "FizzBuzzGizz" 105.fizz.gizz.buzz #=> "FizzGizzBuzz" と拡張・応用ができるか? メソッドのコールに()が必須の言語では 3.fizz().buzz() 形式でも構わない。 オープンクラス機構やメソッドのない言語では関数(buzz(fizz(3)) #=> "Fizz" など)で。
マクロでもいいの?
import threading fbdata = threading.local() def fb(x, cnd, msg): if isinstance(x, int): fbdata.m = n = x s = "" else: n = fbdata.m s = x if cnd(n): return s + msg elif s: return s else: return n def fizz(n): return fb(n, lambda n: n%3==0, "Fizz") def buzz(n): return fb(n, lambda n: n%5==0, "Buzz") def gizz(n): return fb(n, lambda n: n%7==0, "Gizz") assert fizz(1) == 1 assert fizz(3) == "Fizz" assert buzz(fizz(1)) == 1 assert buzz(fizz(3)) == "Fizz" assert buzz(fizz(5)) == "Buzz" assert buzz(fizz(15)) == "FizzBuzz" assert gizz(buzz(fizz(105))) == "FizzBuzzGizz" assert buzz(gizz(fizz(105))) == "FizzGizzBuzz"
404 :
仕様書無しさん :2012/06/11(月) 17:13:15.00
for i in range(100): print "Fizz"*(i%3/2) + "Buzz"*(i%5/4) + str(i+1)*(((1-i%3/2)**2+(1-i%5/4)**2)/2);
#!ruby module FizzBuzzIF def fizz; fbg(3,"Fizz"); end def buzz; fbg(5,"Buzz"); end def gizz; fbg(7,"Gizz"); end end class MyStr < String def initialize(a,str) super str @num = a end include FizzBuzzIF def fbg(n,str) @num%n == 0 ? self.concat(str) : self end end class Integer include FizzBuzzIF def fbg(n,str) self%n == 0 ? MyStr.new(self,str) : self end end
1.fizz.buzz #=> 1 3.fizz.buzz #=> "Fizz" 5.fizz.buzz #=> "Buzz" 15.fizz.buzz #=> "FizzBuzz" 7.fizz.buzz.gizz #=> "Gizz" 21.fizz.buzz.gizz #=> "FizzGizz" 35.fizz.buzz.gizz #=> "BuzzGizz" 105.fizz.buzz.gizz #=> "FizzBuzzGizz" 105.fizz.gizz.buzz #=> "FizzGizzBuzz"
function kuso(n) { switch(n) { default: return n; case 3: return 'Fizz'; case 5: return 'Buzz'; case 6: return 'Fizz'; case 9: return 'Fizz'; case 10: return 'Buzz'; case 12: return 'Fizz'; case 15: return 'FizzBuzz'; とかネタで書いてたら、こういう発想のコードに実際関わる羽目に遭った時の記憶が蘇って嫌になった
function kuso(n) { switch(n) { default: return n; case 3: case 6: case 9: case 12: return 'Fizz'; case 5: case 10: return 'Buzz'; case 15: return 'FizzBuzz'; でいいだろうにな
そうじゃねぇだろwww
>>407 三菱MDISに逝かされた時に、リアルでそんなのが3千行ぐらい延々と続く
ソースコードの改修を押し付けられたな…・。
もう二度と逝かない。
平気で0〜99とか1〜99とかになってるコードの多さに戦慄するスレ
412 :
仕様書無しさん :2012/10/09(火) 21:21:50.29
Duff's Deviceはふつくしいけど見たくない。
413 :
仕様書無しさん :2012/10/10(水) 00:57:25.52
>>410 なんか理由あってそうやってんのかな?それとも池沼が作ったのか。
世界には池沼が書いたコードが溢れてる マジで溢れかえってる
こんなcaseハックテクもある。 aho(int *crLine) { switch(*crLine){ *crLine =__LINE__; return ; case __LINE__:; *crLine =__LINE__; return ; case __LINE__:; *crLine =__LINE__; return ; case __LINE__:; } }
public class a { public static void main(String[] args) { for (int i = 1; i <= 100; i++) { String s = ""; s = fizz(i, s); s = buzz(i, s); s = numz(i, s); System.out.println(s); } } static String fizz(int i, String s) { if (i % 3 == 0) { return s + "Fizz"; } else { return s; } } static String buzz(int i, String s) { if (i % 5 == 0) { return s + "Buzz"; } else { return s; } } static String numz(int i, String s) { if (s.length() < 1) { return String.valueOf(i); } else { return s; } } }
Class C Dim N Dim S Sub Main For N = 1 To 100 S = "" Fizz : Buzz : Numz WScript.StdOut.WriteLine S Next End Sub Sub Fizz If N Mod 3 = 0 Then S = S & "Fizz" End If End Sub Sub Buzz If N Mod 5 = 0 Then S = S & "Buzz" End If End Sub Sub Numz If S = "" Then S = CStr(N) End If End Sub End Class Call New C.Main
twitter.com/paiza_official paizaの公式アカウントの背景に fizzbuzz問題を解け。ただし、剰余は使わないこと という画像があったんだが、剰余を使わないで解くことってできるの?
剰余演算子を使わない、ならこのスレにもいくつかある。
>>419 探してみたら、確かにあった
MOD使わなくても解けるとは
剰余を使わない、というか除算コストを嫌ったらこんな感じかなぁ #include <stdio.h> int main() { int i = 0, div3 = 0, div5 = 0; while (i < 100) { i++; div3++; div5++; if (div5 < 5 && div3 < 3) { printf("%d\n", i); } else if (div5 < 5) { div3 = 0; puts("Fizz"); } else if (div3 < 3) { div5 = 0; puts("Buzz"); } else { div3 = div5 = 0; puts("FizzBuzz"); } } }
除算命令を持たない8bitマイコンなんかだったら有りだな。
実際に
>>422 であるならともかく、
倍数が関わる問題を、剰余を使わずに解決しようyとするのは
基本的にアホではないのか
for(var i=1;i<101;i++){ var str=i; if(i%3==0)str="Fizz"; if(i%5==0)str="Buzz"; if(i%15==0)str="FizzBuzz"; document.write(str+"<br>"); }
>>424 エラトステネスの篩って、普通足し算でやるものかい?
普通はな。チミの世界では違うのか?
>>427 配列だと足し算、リストだと割り算、かな。
節子、それエラトステネスの篩ちゃう>後者
俺が一番最初に作ったのがカウンタ使う方法だった。 剰余演算を使う人がすんごく多いのに逆にちょっと驚いたよ。 for (i = 1, j = 1, k = 1; i <= 100; i++, j++, k++) { if (j == 3) { printf("Fizz"); j = 0; } if (k == 5) { printf("Buzz"); k = 0; } if (j && k) { printf("%d", i); } printf("\n"); }
/* 混ぜて糞コードにしてみた */ #include<stdio.h> int main(int c,char **v){ int i,j; for(i=j=1;i<=100;i++,j++){ switch(j){ default: printf("%d\n",i); continue; case 3: case 6: case 9: case 12: printf("Fizz\n"); continue; case 5: case 10: printf("Buzz\n"); continue; case 15: j = 0; printf("FizzBuzz\n"); continue; } } }
JavaScriptの再帰関数と即時関数 (function saiki(i, max) { if (i >= max)return; var str = i; if (i % 3 == 0)str = "Fizz"; if (i % 5 == 0)str = "Buzz"; if (i % 15 == 0)str = "FizzBuzz"; document.body.innerHTML += str + "<br>"; saiki(i + 1, max); })(1, 101);
433 :
仕様書無しさん :2013/10/13(日) 10:16:06.08
Python2.7で書いてみた for x in range(1,101):print[x,'Fizz','Buzz','FizzBuzz'][(x%3<1)+(x%5<1)*2]
434 :
仕様書無しさん :2013/10/17(木) 02:24:19.71
Ruby2.0 夜勤の暇潰しに携帯からだからミスるかも # coding: UTF-8 100.times do(i) if i%3==0 p="あはーん" elsif i%5==0 p="うふーん" elsif i%3==0 && i%5==0 p="いやんエッチ" else p=i+1 end puts p end
435 :
仕様書無しさん :2013/10/17(木) 02:27:53.25
>>434 訂正
100.times do|i|
だったorz
436 :
仕様書無しさん :2013/10/17(木) 03:19:11.84
pを全部aにでも訂正
rubyで割り算使わないでみたら長くなった・・・ a=[] 33.times do|i| a.push(i+1) end j3,j5,cnt=0,0,1 100.times do a.each do|b| if cnt==3*b j3=1 end if cnt==5*b j5=1 end end if j3==1 && j5==0 mes="fizz" elsif j5==1 && j3==0 mes="buzz" elsif j3==1 && j5==1 mes="lenny kravitz" else mes=cnt end puts mes cnt+=1 j3,j5=0,0 end
モジュロ演算子使う奴=機能豊富な時代の現代っ子 割って切り上げた値と割った値を比較する奴=浮動小数点除算が早い時代の現代っ子 3つカウンタを使う奴=ベーシックなやり方にこだわるオッサン 文字列をメソッドで比較する奴=オブジェクト至高の現代っ子 再帰関数にする奴=スタックは無限にあると思ってる現代っ子 "Fizz"と"Buzz"両方出すときは1行?2行?と聞く奴=ナイス質問だが今回は気にすんな。 表示文字列と改行コードを別に出力する奴=サンプルだから気にすんなって。 出力を区切らない奴=それでもいいんだけどちょっとは気にしろよ。 asmキーワード使うやつ=素直にニーモニックだけ書けよ。 配列に100個値を入れておいて無判定で順番に出す奴=速度命の変態乙。 "Fizz"/"Buzz"と"FizzBuzz"を別に判定する奴=新人乙。 IDENTIFICATION DIVISIONから書く奴:先輩乙。 73桁目からコメントの奴:大先輩オッスオッス。
Squeak Smalltalk (1 to: 15) collect: [:n | ((#('' '' Fizz) atWrap: n), (#('' '' '' '' Buzz) atWrap: n)) ifEmpty: [n]]
あー、勢いで書いたら間違ってたわ。 割って切り上げた値と割った値を比較 じゃなくて 割って切り捨てた値と割った値を比較 だわ。 逝ってくるorz
フィボナッチ数列でFizzBuzzしようぜ
Squeak Smalltalk | fibGen fizz buzz | fibGen := Generator on: [:g | | a b | a := 0. b := 1. [g yield: (a := b flag: (b := a+b))] repeat]. fizz := #('' '' Fizz). buzz := #('' '' '' '' Buzz). (1 to: 100) collect: [:idx | | fib | fib := fibGen next. (fizz atWrap: fib), (buzz atWrap: fib) ifEmpty: [fib]] => #(1 1 2 'Fizz' 'Buzz' 8 13 'Fizz' 34 'Buzz' 89 'Fizz' 233 377 'Buzz' 'Fizz' 1597 2584 4181 'FizzBuzz' 10946 17711 28657 'Fizz' 'Buzz' 121393 196418 'Fizz' 514229 'Buzz' 1346269 'Fizz' 3524578 5702887 'Buzz' 'Fizz' 24157817 39088169 63245986 'FizzBuzz' 165580141 267914296 433494437 'Fizz' 'Buzz' 1836311903 2971215073 'Fizz' 7778742049 'Buzz' 20365011074 'Fizz' 53316291173 86267571272 'Buzz' 'Fizz' 365435296162 591286729879 956722026041 'FizzBuzz' 2504730781961 4052739537881 6557470319842 'Fizz' 'Buzz' 27777890035288 44945570212853 'Fizz' 117669030460994 'Buzz' 308061521170129 'Fizz' 806515533049393 1304969544928657 'Buzz' 'Fizz' 5527939700884757 8944394323791464 14472334024676221 'FizzBuzz' 37889062373143906 61305790721611591 99194853094755497 'Fizz' 'Buzz' 420196140727489673 679891637638612258 'Fizz' 1779979416004714189 'Buzz' 4660046610375530309 'Fizz' 12200160415121876738 19740274219868223167 'Buzz' 'Fizz' 83621143489848422977 135301852344706746049 218922995834555169026 'FizzBuzz')
Swift(Apple)で。 func fizzbuzz(x:UInt) { for i in 1...x { var s = "" if i % 3 == 0 { s += "Fizz" } if i % 5 == 0 { s += "Buzz" } if s == "" { print(" \(i)") } else { print(" \(s)") } } }
444 :
仕様書無しさん :2014/12/04(木) 20:56:05.20
rubi for i in 1..100 do print 'Fizz' if i % 5 == 0 print 'Buzz' if i % 3 == 0 print i if i % 3 != 0 and i % 5 != 0 puts '' end
def fizzbuzz(times) count = 0 while count <= times return true if count % 3 == 0 puts "fizz" return false end if count % 5 == 0 puts "buzz" return false end if true puts count end count += 1 end end fizzbuzz(100) 動くかどうか分からない Ruby death