プログラマーなら「FizzBuzz問題」解けるよな?

1(´・ω・`) ◆Hc1VAagKMg 2008/04/29(火) 20:06:06
1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

言語自由

2仕様書無しさん2008/04/29(火) 20:06:54
未経験プログラマー募集って??【3行目】
http://pc11.2ch.net/test/read.cgi/prog/1207924695/

でいくつか回答あり

3仕様書無しさん2008/04/29(火) 20:51:55
  ||  !| │
  ||  !| │              ,.-─‐-.、
=||=!| │              /:::::::::::::::::::::ヽ
  ||  !| │            |:::: ::::::::::::::::::::::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_____, -ー‐‐‐‐' ´      `ー'

4仕様書無しさん2008/04/29(火) 21:08:02
@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

5仕様書無しさん2008/04/29(火) 21:10:46
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");
・・・・
}

6んじゃVBA2008/04/29(火) 21:12:18
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仕様書無しさん2008/04/29(火) 21:35:32
7

842008/04/29(火) 22:15:06
カウント変数の初期化位置ミスってるなww
無限ループだわ(´・ω・`)

動くか知らんが

9仕様書無しさん2008/04/29(火) 22:17:08
誰か機械語で書いてくれ

10仕様書無しさん2008/04/29(火) 22:38:05
FizzBuzzなんて古い。
今は世界のナベアツ

11仕様書無しさん2008/04/29(火) 22:54:37
>>9
無茶いうな

12仕様書無しさん2008/04/29(火) 23:33:55
じゃああせんぶら。ごーつーぶんww

13仕様書無しさん2008/04/29(火) 23:58:15
13

14仕様書無しさん2008/04/30(水) 00:06:28
>>4は見なかったことにしてくれ・・・orz

15仕様書無しさん2008/04/30(水) 00:45:02
マに立てるな
ム板だろ

16仕様書無しさん2008/04/30(水) 00:50:15
16

17仕様書無しさん2008/04/30(水) 00:50:55
17

18仕様書無しさん2008/04/30(水) 02:49:06
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仕様書無しさん2008/04/30(水) 08:48:29
19

20仕様書無しさん2008/04/30(水) 10:38:22
Buzz

21仕様書無しさん2008/04/30(水) 10:55:51
Fizz

22Japan NEET University2008/04/30(水) 11:43:44
FizzBuzzでは満足できないあなたに

http://www.topcoder.com/tc

大量の問題が難易度別にあるので、
初心者から上級者まで満足できます


随時参加者募集中

23仕様書無しさん2008/05/01(木) 01:56:38
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

24仕様書無しさん2008/05/01(木) 01:57:38
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
}

25仕様書無しさん2008/05/01(木) 03:52:23
無駄に長い

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

29仕様書無しさん2008/05/01(木) 22:45:13
鬼才現る!って言いたくなる様なコードを書いてくれよ

30仕様書無しさん2008/05/01(木) 22:56:10
>>29
print("鬼才現る")

31仕様書無しさん2008/05/01(木) 23:40:16
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();
 }
}

32仕様書無しさん2008/05/02(金) 07:00:50
/* 普通のコードしか思いつかねぇ */

#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);
}

33仕様書無しさん2008/05/02(金) 12:03:33
/* じゃあ、あまり普通じゃないコードを */

#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);
 }
}

34仕様書無しさん2008/05/02(金) 12:14:28
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

35仕様書無しさん2008/05/02(金) 13:12:35
Buzz

36仕様書無しさん2008/05/02(金) 13:30:21
Fizz

37仕様書無しさん2008/05/02(金) 13:31:58
このスレでは、3の倍数のレスでは「Fizz」、5の倍数のレスでは「Buzz」と書き込み、
それ以外ではレス番号を書き込んでください。

38仕様書無しさん2008/05/02(金) 13:46:51
3の倍数か3を含む数字の時だけアホになってください。

39仕様書無しさん2008/05/02(金) 13:55:46
Fizz

40仕様書無しさん2008/05/02(金) 14:07:56
Buzz

41仕様書無しさん2008/05/02(金) 14:10:59
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);
}
}
}

43仕様書無しさん2008/05/02(金) 20:15:21
#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;
}

44432008/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;
}

46仕様書無しさん2008/05/03(土) 01:52:10
>>45
だったらそのままコンパイルから実行までやっちゃおうぜ

47仕様書無しさん2008/05/03(土) 09:18:27
// 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();
}
}
}

50仕様書無しさん2008/05/04(日) 23:40:18
Buzz

51仕様書無しさん2008/05/05(月) 17:37:45
Fizz

52仕様書無しさん2008/05/05(月) 20:42:11
fiz

53仕様書無しさん2008/05/05(月) 22:37:47
ひさしぶりの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);
}
}

54仕様書無しさん2008/05/05(月) 23:41:08
X86アセンブラ、C、C++、Java、VB辺りが出たので他のないすかー?

ぴゅう太とかリアルで動かしてくれたら泣ける。

55仕様書無しさん2008/05/05(月) 23:42:56
>>54
ググレカス

56仕様書無しさん2008/05/05(月) 23:47:01
>>55
つってもCやVB系は書いたし他のメジャーなんも出たからさぁ。
変な奴こねえかなぁ。そういやDelphiねーな。

57仕様書無しさん2008/05/06(火) 00:12:55
<?php
for ($i=0 ; $i<100 ; $i++ ){
$a=$i;
if (!$i%3)$a.="fizz";
if (!$i%5)$a.="buzz";
echo $a;
}
?>

58仕様書無しさん2008/05/06(火) 00:46:19
>>57
for( $i = 1; $i <= 100; ... ) だな。

59仕様書無しさん2008/05/06(火) 04:48:24
かめさん=タートル!作る。
かめさん!ペンなし。
かめさん!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)) 向き。
」実行。

60仕様書無しさん2008/05/06(火) 06:44:30
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

61仕様書無しさん2008/05/06(火) 06:54:09
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

62仕様書無しさん2008/05/06(火) 08:40:48
>>57
常に数値が出るぞ。要件を良く見よう。

63仕様書無しさん2008/05/06(火) 09:30:12
でませんでした∧||∧

64仕様書無しさん2008/05/06(火) 09:32:46
やっぱでるな

65仕様書無しさん2008/05/06(火) 09:36:11
こうですかわかりません><
<?php
for ($i=1 ; $i<101 ; $i++ ){
$a="";
if (!$i%3)$a.="fizz";
if (!$i%5)$a.="buzz";
if ($a="")$a=$i;
echo $a;
}
?>

66仕様書無しさん2008/05/06(火) 09:39:04
$a=""

orz

67仕様書無しさん2008/05/06(火) 10:44:45
>>64
う、うん。それでいいよ。
俺が悪かったよ。

68仕様書無しさん2008/05/06(火) 11:03:37
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";

70仕様書無しさん2008/05/06(火) 12:05:52
3が付く時だけFizzと言ってください

71仕様書無しさん2008/05/06(火) 12:38:34
「FizzBuzz問題」でググッたけど、どのブログも「この問題をどう解くか?」
という話になっていて、元の話の「プログラムを書けない奴をどうするか?」
と言う話はほとんど出てないのな。

日本じゃどの現場でも、プログラムが全く書けない奴を抱えて困った経験など、
してないんだろうか?

72仕様書無しさん2008/05/06(火) 13:14:23
>>71
うんそうだよw極例だが
部長は設計できない、実装できない、捏造完璧
課長は設計嘘っぽい、実装嘘っぽい、報告うまい
主任は実装できそう、設計できない、ごますりうまい
正社員は実装できそう、ごますりうまそう
派遣は実装できる、設計もできる

プログラムの書ける人が困るのが日本式だぜw

73仕様書無しさん2008/05/06(火) 13:29:31
>>71
書けない奴はこんな問題、
ある意味歯牙にもかけないだろ

74仕様書無しさん2008/05/06(火) 14:14:23
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)))

75仕様書無しさん2008/05/06(火) 17:43:07
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仕様書無しさん2008/05/06(火) 17:53:58
76

77仕様書無しさん2008/05/06(火) 20:43:39
>>75
掲示板に投稿するとオフサイドルールが・・・

78752008/05/06(火) 20:45:28
>>77にいじめられたぉ

助けてほしいぉ

79可能な限り長く書いてみたw2008/05/06(火) 22:13:02
//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 = "";

80仕様書無しさん2008/05/06(火) 22:13:43
//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;
}

81仕様書無しさん2008/05/06(火) 22:14:24
//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;

82仕様書無しさん2008/05/06(火) 22:16:23
//4/4
}while(*pt_tgt != guard)

pt_tgt = pt_st;

//表示
do{
printf("\s\n"pt_tgt++);
}while(*pt_tgt != guard);

return 0;

}//環境無いからデバッグして無い。もしかしたら動くかも?

83仕様書無しさん2008/05/06(火) 22:39:11
# そんじゃ、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

84仕様書無しさん2008/05/06(火) 22:59:20
# 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

85仕様書無しさん2008/05/07(水) 01:49:10
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);
}

87仕様書無しさん2008/05/07(水) 05:36:56
============================
俺用しおり
             ここまで暗記
============================

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で

90仕様書無しさん2008/05/07(水) 18:17:36
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);}

これ以上短くなるかな

91仕様書無しさん2008/05/07(水) 19:56:50
main(){inti;while(++i<101)printf(i%3?i%5?"%d¥n":"buzz¥n":i%5?"fizz¥n":"fizzbuzz¥n",i);}

92仕様書無しさん2008/05/07(水) 20:08:11
>>90
ワロタ
三項演算子は思いついたがそんな使い方があるとは

93仕様書無しさん2008/05/07(水) 21:28:49
int i;は外に出してグローバルにしないと初期値が不定になるぞ。

94仕様書無しさん2008/05/07(水) 21:33:35
パソコン買って半年の超初心者の俺が何故かこのスレに来ました。


ここにいる人達はどう考えても天才ですよね?

95仕様書無しさん2008/05/07(水) 23:09:24
>94
いいえ違います

ここにいる人達は毎日
おい○○、あれやっておけ
おい○○、明日までにデスマでこれデバレ
おい○○、パン買って来いあと報告書ここ修正
おい○○、出張いってこい
おい○○、よかったな某大手Nに売られるぞw

こんな感じで虐げられた下級民族以下の扱いを
毎日受けています


96仕様書無しさん2008/05/07(水) 23:41:04
超初心者がこんなスレにたどり着いた方法を知りたい

97仕様書無しさん2008/05/08(木) 21:24:17
酔った勢いでひまわり(日本語プログラミング言語)で書いてみた


答え=「」
足す数=0
100回(
  足す数=足す数+1
一時3=足す数%3
もし、一時3=0 ならば、答え=答え&「FIZZ」
一時5=足す数%5
もし、一時5=0 ならば、答え=答え&「BUZZ」
もし、(一時3<>0)かつ(一時5<>0)ならば、答え=答え&足す数
答え=答え&「¥n」

答えと、表示。


分かりにくっ!
プログラムとしても日本語としても分かりにくっ!

なんかね、根っこがBASICで、それを日本語に訳しただけって感じがするよ、ひまわり。
コンピュータからして英語圏発祥だから仕方ないのかなあ。

98仕様書無しさん2008/05/09(金) 02:17:58
じゃ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))

99仕様書無しさん2008/05/09(金) 02:30:59
Pythonで。 ちょっとズルか?
for i in range(100):print i+1,i%3/2*"Fizz"+i%5/4*"Buzz"or-~i

100仕様書無しさん2008/05/09(金) 17:49:03
>>90
ttp://www.shinh.org/p.rb?FizzBuzz#C

73B まで縮むっぽいよ

101仕様書無しさん2008/05/14(水) 01:21:02
久しぶりにJavaでFizzBuzz問題のプログラムを書いてみたら、131バイトで書けた。
133バイトが最小だと思ってたけど、何か言語仕様変わったのかな。

試しにanarchy golfに登録してみたら、ちゃんと登録できたし
http://golf.shinh.org/p.rb?FizzBuzz

102仕様書無しさん2008/05/14(水) 23:06:37
main(i){
for(;i<101;puts(i++%5?"":"Buzz"))
printf(i%3?i%5?"%d":"":"Fizz",i);
}

103仕様書無しさん2008/05/17(土) 08:18:49
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
ここに神がいると聞き
http://www.nicovideo.jp/watch/sm3343017">【ニコニコ動画】ムービーメーカー編集後 aviutlにはいらない・・・

105仕様書無しさん2008/05/19(月) 00:42:20
プログラミングのジャンルと難易度(および Web プログラミング批判)
http://d.hatena.ne.jp/scinfaxi/20080517/1210970917

106仕様書無しさん2008/05/19(月) 03:14:45
#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ってのはどんなバケモノコードか見てみたいな。

1071062008/05/19(月) 03:15:40
>>90じゃなくて>>100だった。。

108仕様書無しさん2008/05/22(木) 22:57:06
main(a){
while(++a<100){
printf("\n%d\r",a);
if(!(a%3))printf("Fizz");
if(!(a%5))printf("Bizz");
}}

最初の改行が削れなかった。

109仕様書無しさん2008/05/23(金) 02:00:16
なんで未初期化のまま使ってるんだろうと思ってたが、
mainの第1引数であることに今さら気づいたorz

110仕様書無しさん2008/05/23(金) 08:30:46


111仕様書無しさん2008/05/23(金) 23:39:50
コードサイズよりバイナリサイズを削ろうよ
とか思う俺はKY?

112仕様書無しさん2008/05/24(土) 00:25:22
>>111
バイナリゴルフもやる人はやるみたい

あと、ちょっと違うかもだけど、例えばあなごるなら
http://golf.shinh.org/l.rb?out
http://golf.shinh.org/l.rb?z8b
こういうのもあるよ

113仕様書無しさん2008/05/24(土) 01:42:25
そういや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>

114仕様書無しさん2008/05/24(土) 12:38:59
main(i){while(i<101){printf("%d\r%s%s\n",i++,i%3?"":"Fizz",i%5?"":"Buzz");}}

115仕様書無しさん2008/05/24(土) 22:49:43
>>111
KYだなぁ。たぶんお前が思ってるよりずっと大きな意味で。

116仕様書無しさん2008/05/24(土) 23:57:45
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文字ってどうやるのだろう。。

117仕様書無しさん2008/05/25(日) 15:14:37
¥rを使うダーティーな奴がありなら、これでもいけたよ。
main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3?"%d¥r":"Fizz",i);}

118仕様書無しさん2008/05/26(月) 23:16:29
>>115
K神奈川県
Y横浜市

119仕様書無しさん2008/05/29(木) 22:41:54
横須賀市ですね、わかります

120仕様書無しさん2008/05/30(金) 04:02:57
熊本県八代市のこともたまには思い出してあげてください。

121仕様書無しさん2008/06/01(日) 21:31:33
どう見ても京都府八幡市です。
本当にありがとうございました。

122仕様書無しさん2008/06/02(月) 00:04:09
京都といえば
八ツ橋だろ

123仕様書無しさん2008/06/04(水) 00:45:13
神戸の
洋館です

124仕様書無しさん2008/06/06(金) 13:27:46
腐れ
ヨーグルト

125仕様書無しさん2008/06/06(金) 14:57:11
後楽園
遊園地

126仕様書無しさん2008/09/02(火) 00:20:45
>>125
後楽園
遊園地で、ぼ
くとあくし

127仕様書無しさん2008/10/03(金) 02:33:52
#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
ほしゅ

129仕様書無しさん2009/01/14(水) 14:17:20
smalltalkキボソ

130仕様書無しさん2009/01/14(水) 20:29:34
>>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;
}

131仕様書無しさん2009/01/14(水) 21:50:52
#!/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

132仕様書無しさん2009/01/15(木) 21:50:07
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

あぼーん

135仕様書無しさん2009/01/19(月) 23:08:51
>>134
こんな基地外、死ねばいいのに
http://d.hatena.ne.jp/yaneurao/20080619

136仕様書無しさん2009/01/20(火) 09:58:08
まったくだ。死ねばいいのにね。
このコピペしてる莫迦。

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」の条件はうすうすばれているようですが・・・・。

138仕様書無しさん2009/01/21(水) 17:39:37
old_area_numって何?

139仕様書無しさん2009/01/21(水) 17:45:44
old_shop_numってなに?

140仕様書無しさん2009/01/23(金) 11:48:33
>>137
一緒に音ゲー板に帰るぞ

ていうかとっくに解析されてるのにいまさらマ板に持ってくるなよ

141仕様書無しさん2009/01/23(金) 12:26:53
「16進×35バイト」らしき元データが35文字になるとか
見え透いてる。

142仕様書無しさん2009/01/24(土) 19:39:37
#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;}
{
?>

144仕様書無しさん2009/01/25(日) 15:03:33
if () {
print "...";}
}elseif

}が1つ余計じゃない?

145仕様書無しさん2009/01/25(日) 15:38:05
>>143
あからさまに括弧の対応が変。
最初からやり直せ。

146仕様書無しさん2009/01/25(日) 17:48:27
>>144
thx
>>145
そうします。。thx

147仕様書無しさん2009/01/25(日) 18:42:08
2chに書き込むときに消えただけかもしれないけど、
ちゃんとインデントして、括弧の位置をそろえると、
無駄な作業を減らせるよ

148仕様書無しさん2009/01/25(日) 23:02:54
viで%押せば済むだろ。

149仕様書無しさん2009/01/26(月) 09:51:37

150仕様書無しさん2009/01/27(火) 04:44:11
#/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

151仕様書無しさん2009/01/27(火) 21:53:31
無駄なfork&exec大杉

152仕様書無しさん2009/02/05(木) 00:42:24
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);
}

153仕様書無しさん2009/02/14(土) 17:52:59
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);
    }
}

155仕様書無しさん2009/03/12(木) 05:37:27
むしろ、よくそんな書き方が出来たなと言いたい
フツーに書いた方が簡単な希ガスw

156うゆ ◆e6.oHu1j.o 2009/03/13(金) 20:49:29
Ozyでぐぐれかす

157仕様書無しさん2009/03/13(金) 23:16:03
失せろカス

158仕様書無しさん2009/03/15(日) 23:48:00
#! /usr/bin/perl
foreach(1..100){
print 'Fizz' if $_ % 3;
print 'Buzz' if $_ % 5;
print $_ unless $_ % 3 or $_ % 5;
print "\n";
}

恥ずかしいくらい単純すぎるかな…

159仕様書無しさん2009/03/16(月) 00:30:30
恥ずかしいくらい単純なミスしてた…orz

160仕様書無しさん2009/03/16(月) 07:37:32
三行以上のプログラムにはバグはつきものさ

161仕様書無しさん2009/03/25(水) 23:43:51
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();
        }
    }
}

162仕様書無しさん2009/04/17(金) 20:08:51
/* いまさらだけど、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") ;
 }
}

163仕様書無しさん2009/04/25(土) 01:04:12
#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();));
}

164仕様書無しさん2009/04/25(土) 02:16:20
#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();));
}

165仕様書無しさん2009/04/25(土) 06:37:45
15個並べたのか

1661642009/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はどうやって宣言すればいいの?そもそも無理なの?

167仕様書無しさん2009/04/26(日) 19:02:12
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)])

168仕様書無しさん2009/04/26(日) 19:17:12
あ〜…投稿しておいてなんだけど、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)

169仕様書無しさん2009/04/26(日) 22:49:00
%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();
        }
    }
}

170仕様書無しさん2009/05/16(土) 01:04:18
#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;
}

初心者がちょっとそれっぽく書いてみた

171仕様書無しさん2009/05/16(土) 22:57:37
>>170
それっぽくはあるけど、良いコードじゃないぞ
実装するなら、実装意図を明確にするべきで、

if (!(i%15))

この記述で無理矢理論理判断に持ち込むのは、良くない例
たしかにコレでも動くけども、
このコードでは 15で割ったあまりが ==0である、ことに意味がある
関数の戻りが0/1で戻ってくるから、それを論理判断にしているわけではない
そこをはき違えると、意図が不明確で、他人が読みづらいコードになる

172仕様書無しさん2009/05/17(日) 23:12:18
Cでは当たり前の記述だがな。

173仕様書無しさん2009/05/17(日) 23:32:19
XXでは当たり前、で思考停止してるから、糞コードが減らないんじゃね?w

174仕様書無しさん2009/05/17(日) 23:36:21
コードに15という定数を使っているのは今一

175仕様書無しさん2009/05/18(月) 21:52:46
#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);
}
}

初心者が意見を取り入れて普通に書いた

176仕様書無しさん2009/05/20(水) 20:57:48
#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()
{

177仕様書無しさん2009/05/20(水) 20:59:00
途中で書き込んじまったorz
修正するのもメンドクサイから放置しよ。

178仕様書無しさん2009/06/20(土) 18:14:32
多分最速、既出?
#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;
};
}

1791782009/06/20(土) 18:19:20
あー、
100個の結果をそのままprintfした方が早いか... orz
私がバカでした

180仕様書無しさん2009/06/20(土) 18:27:44
これ最強。
#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"
);
};

181仕様書無しさん2009/07/11(土) 07:42:40
main(i){for(;i<101;puts("Buzz"-i*i++%5))printf(i%3?i%5?"%d":0:"Fizz",i);}

182仕様書無しさん2009/07/12(日) 04:57:48
>void main(void)
ここで既に警告が出てるぞ。

183仕様書無しさん2009/08/04(火) 19:56:50
@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

1841832009/08/04(火) 20:03:18
>>183はDOS窓用バッチ


185cobol2009/09/07(月) 17:08:09
    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.

186仕様書無しさん2009/09/08(火) 00:03:08
無駄に長いなと思ったらCobolか...

187仕様書無しさん2009/09/16(水) 20:54:30
SQL見た時、なんか冗長だな〜COBOLみて〜、と思った。

188仕様書無しさん2009/09/16(水) 23:18:17
遊びがてら、出力が汚いのを作ってみた。後悔はしてない。(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;
}

189仕様書無しさん2009/09/16(水) 23:19:50
(パターン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仕様書無しさん2009/09/17(木) 21:36:42
なんでこの問題が有名なのかイマイチわからんのだが、
重複さえ気をつければ他に別にひっかけがあるようなもんでは無いよね。

191仕様書無しさん2009/09/17(木) 22:03:23
引っかけがあるように見えるので、しばらく考えるが、
実は、引っかけがないことに気付く。

これが、最大の引っかけ。

192仕様書無しさん2009/09/17(木) 23:17:09
>>190-191
そもそもプログラマとしての素養を見るための問題の例として挙げられたものだから
引っかけとか特に必要ないんだよ

193仕様書無しさん2009/09/18(金) 23:12:18
普通のプログラマなら2分以内で書けて当たり前という程度には簡単。

194仕様書無しさん2009/09/19(土) 14:18:17
「2分」ってよく言われるけど、
「問題用紙をめくって下さい」から、「動作確認終わりました」まで、
必ずしも2分以内に終わらないよ。
特に、自分が普段はあまり使っていないような言語では。

問題文見て、面食らってる時間とか、
改行コードの出力、全パターンで共用した方がいいのかどうか思案する時間とか、
インクルード文なんだっけ、main関数の戻り値にvoid許可されてたっけとか、
Javaのクラスパスが通ってないとかw

2分以内と言ってる人は、何度も書いてるから、2分で出来るようになっただけ。

195仕様書無しさん2009/09/19(土) 14:31:04
んなこたーどうでもいいんだよ

196仕様書無しさん2009/09/19(土) 14:43:36
FizzBuzz

197仕様書無しさん2009/09/19(土) 14:45:47
195取られた

198仕様書無しさん2009/09/20(日) 15:04:59
>>194
ん?言語の指定はないんだが……

199仕様書無しさん2009/09/20(日) 20:44:10
>>194
FizzBuzzの2分は誤訳だってよ。

200仕様書無しさん2009/09/20(日) 22:37:29
#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);

201仕様書無しさん2009/09/20(日) 23:13:31
ちょっとだけ、悪ノリ。(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;
}

202仕様書無しさん2009/09/21(月) 11:41:01
>>192
プログラマの素養が関係ないような問題で素養を見ようとする意図って何なんだろうな。
結局、元のブログ主の?話題づくりに利用されているだけな気が知る

203仕様書無しさん2009/09/21(月) 12:19:30
元ネタ知らずにレスしてる香具師いたのか。

204ぅゅ ◆e6.oHu1j.o 2009/09/22(火) 12:13:28
この問題って日本のものじゃないよね
海外っていうとレベル高そうにおもえるけど実はそうでもないんじゃ

205仕様書無しさん2009/09/22(火) 12:19:23
PowerShellバージョンが最強だな

206仕様書無しさん2009/09/22(火) 19:19:48
>>202
この問題すら解けない奴がいるって事なんじゃまいか?

207仕様書無しさん2009/09/23(水) 00:08:33
>>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

209仕様書無しさん2009/09/24(木) 12:59:58
>>203
>>1 のリンク先すら読まない莫迦が
そんだけ沢山いるってことでしょうな。

210仕様書無しさん2009/09/24(木) 16:41:34
スレタイ嫁、1嫁だけなら分かるけど、
1のリンク先まで必須となると、何か違うような気がする。

あと、何ていうか、「リンク先まで嫁」と、「2分以内」って、同じ部類のように思える。
自分の脳内ででっち上げた完璧さを、周囲の人に対して、期待している点において。
嫌味な言い方をすれば、配慮や謙虚さが足りないって言うか。

211仕様書無しさん2009/09/25(金) 03:28:04
それをたらたら書いてる時間でリンク先読むのは十分可能だよな?
元ネタは採用試験の話だ、くらいはFizzBuzzより簡単にわかるよな。
配慮や謙虚さが足りないって、むしろそっちじゃないのか。
嫌味な言い方だがな。

212仕様書無しさん2009/09/25(金) 15:11:26
情報の提示の仕方が悪い、
ボクちゃんは悪くない、おまえが悪い、おまえの教え方が悪い


というのは、典型的なゆとり脳の主張です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);}


214仕様書無しさん2009/10/19(月) 22:09:10
これはコードゴルフじゃないんだぜ。

実行環境はなし。もしコンパイルが通らない、結果が間違っていたらその場で銃殺。

というシビアな条件で最も間違いにくいコードに最高得点をあげたい。

215仕様書無しさん2009/10/19(月) 22:28:45
その条件だと、HQ9F+で書くのが、最強か?
ttp://cfs.maxn.jp/neta/HQ9F+.html

※元になったのはHQ9+という、ネタ言語。
  Hと入力すれば、Hello worldを出力してくれる。
  ttp://ja.wikipedia.org/wiki/HQ9%2B

216コード書き忘れた2009/10/19(月) 22:30:41
++++++++++f

私の個人的な意見になるけど、
Fの一文字で、FizzBuzzを出力できるようにした方が、HQ9+っぽいと思うんだけどね。

217仕様書無しさん2009/10/19(月) 22:45:37
Cで書いたら緊張のあまりセミコロン忘れてあぼーんだなw

218Go2009/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")
 }
}

219仕様書無しさん2009/11/17(火) 19:50:32
何度見ても気持ち悪い文法だなあ

220仕様書無しさん2009/11/18(水) 05:13:33
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

221うゆ ◆e6.oHu1j.o 2009/12/03(木) 05:10:19

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

222仕様書無しさん2010/04/21(水) 22:59:37
剰余(割り算の余り)を出すのに演算子の % 以外で計算できますか?
% を忘れると大変だぞ!

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();
}
}

224仕様書無しさん2010/04/22(木) 00:07:26
向こうの子供はハッキングしまくりだってのにお前らときたら…

【調査】13歳までにハッキングをした経験した34%――米英の若者の実態調査(10/04/15)
http://pc11.2ch.net/test/read.cgi/pcnews/1271336569/

225仕様書無しさん2010/04/22(木) 02:12:40
>>221-223
うゆw問題からしてわかってねぇwwさすが天才www
"mes"w "kard"とおんなじwwメソッドwww

226仕様書無しさん2010/04/23(金) 00:56:20
>>225
223は動作は当たっているんじゃない。
% を使用しない方法ではこれでいいんじゃない?

227仕様書無しさん2010/04/23(金) 01:42:01
>>224
それってさ、漏れパスを使ったとか
正しい言い方忘れたが、「スクリプト使用のガキ」も含んででない?

228仕様書無しさん2010/04/23(金) 01:44:07
Script kiddie ?

229仕様書無しさん2010/04/23(金) 02:07:26
>>226
%を使う使わない以前に結果を他のコードと比べるくらいなぜできない?
数学のテストで「計算結果は違うけど式はあってますよね」とか言うクチか。

230仕様書無しさん2010/04/23(金) 02:59:12
%を忘れたwという変な条件を入れたとしても、
int reminder(int divisor, int dividend)
みたいな相当するメソッドを作るだろふつー。
直近の3と5の倍数を保持して商と比べるなんてせんでも。
void型のメソッドしか認めんwのなら別だけどさ。

231仕様書無しさん2010/04/23(金) 14:41:46
>>229
結果は当たっているよ。書き方の問題ね。

232仕様書無しさん2010/04/23(金) 14:57:18
>>1
>1から100までの数をプリントするプログラムを書け。
>ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

とあるのに3や5をプリントアウトしたらただの間違いだろ。
問題をちゃんと読んでねぇアホじゃねーか。

2332312010/04/23(金) 15:26:12
>>232
あー そこか

234仕様書無しさん2010/04/24(土) 03:25:23
223に感動した。
コード読んでも、何やってるのかワカランかったが、
int3, i/3, int5, i/5 の値を出力してみたら、発想の奇抜さにたまげた。

2352342010/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); }

236仕様書無しさん2010/04/24(土) 03:35:25
訂正 ×233 ○223

あと、if ((i-1)/15!=i/15) でOKだ。

237仕様書無しさん2010/04/24(土) 03:59:03
iが正の整数なら剰余%は除数xについてi-(int(i/x)*x)なんだから当たり前じゃん。
%を忘れてどうこうってのがどうかしてる。馬鹿?

238仕様書無しさん2010/04/24(土) 10:03:06
%を忘れた人のため:その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 );
  }
 }
}

239仕様書無しさん2010/04/24(土) 10:14:09
修正: "%i " → "%u "

240仕様書無しさん2010/04/24(土) 13:09:56
>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);
}

241仕様書無しさん2010/04/24(土) 13:23:30
>>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);
}

242仕様書無しさん2010/04/24(土) 13:35:29
あまり変わらんけど関数テーブル版

#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);
 }
}

243仕様書無しさん2010/04/24(土) 21:33:16
これはすごいね。
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でしょ

244仕様書無しさん2010/04/24(土) 22:55:00
>243
>15回に1回ごとに3と5の倍数が来ることを想定して配列に代入しているという
>理解でいいのかな。

全然違う。
関数compactが15で割った余りを(%演算子無しで)計算しているのがポイント。
下から4bitづつに区切って(まぁ上からでも同じだけど)、それを全部足したものと元の値では
15で割った余りが同じになることを利用している。
なぜそうなるかはちょっと頭をしぼって考えてみな

245仕様書無しさん2010/04/24(土) 23:07:38
10進数でmod 9が各桁の値の和に等しいってのと同じ話か。
16進数で考えてみようと思ったことが無かったぜ。

246仕様書無しさん2010/04/24(土) 23:53:32
明らかに%演算子より知名度低そうな知識だな…

2472432010/04/25(日) 09:43:48
>>244
違っていたか。しぼって考えてみます。

248(u_・y) ◆e6.oHu1j.o 2010/04/26(月) 04:48:47
>>225
おれが過去にかいたコードを描いたときにかんがえてた事を
予想すると、お前のその意味不明なレスもなんとなくわかるよ

おれが適当に描いた部分は、 たとえ、プログラミング知らない奴でも修正できそうなレベルだ
っていうところまではわかるか??
だれにでも解ける場所とか、自分が過去に解いた場所は適当になる
それがuy。

その適当具合は、常軌を逸しているかもしれない
問題すら適当に読むか読まないし、コンパイルチェックもしないで2chに貼り付けたりもする
たとえそれが間違っていてもどうでもいいやという気分になる



まとめると:

おれは忙しいから
無駄なことに時間は使いたくない

249仕様書無しさん2010/04/26(月) 05:26:25
>>246
mod 9 = 0 の場合に限れば、「全桁の数字を足すと9の倍数になる数は9の倍数」
っていう中学生でも知ってる話だぜ。

250仕様書無しさん2010/04/26(月) 08:13:08
言い訳にもなってねえ
流石屑ニート様

251革命家[uy] ◆rT33C51l9k 2010/05/01(土) 21:52:31
え・・・、って思った
よほどのヴぁかか、全然初心者レベルだろお前

252仕様書無しさん2010/05/02(日) 00:20:36
頭大丈夫?

253革命家[uy] ◆e6.oHu1j.o 2010/05/04(火) 10:42:56
さっさと追いつけよのろま

254仕様書無しさん2010/05/04(火) 13:54:14
職歴なしニートにおいつくのはもう無理なんで。。

255仕様書無しさん2010/05/07(金) 19:45:27
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

その方法が一番だよ
シンプルイズベスト
業務のプログラムであんまり凝ったコード書かれると困る

258仕様書無しさん2010/05/26(水) 18:28:21
割り算や余剰を使うと計算コストが高い。
平凡にカウンタを使うほうが早い。
正しく解くだけじゃなくて高速性を考えないといけないのにわかってないアホ多すぎ

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());
        }
    }
}

261仕様書無しさん2010/05/27(木) 13:32:51
>>258
その労力は、検索アルゴリズムの選択とか、枝刈りとか、効果出やすい所につぎこめよw
値を記憶するのは、どうしようもなく高速化最優先の場合か、せいぜい、三角関数のテーブル化あたりだね。

262仕様書無しさん2010/05/28(金) 02:01:12
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))

263仕様書無しさん2010/05/31(月) 13:22:37
Pythonでとりあえず標準的に書いてみる
見れば分かるとおり、無限ループするよ

i=0
while True:
print i,
if i%3==0:
print "Fizz",
if i%5== 0:
print "Buzz",
print '\n'
i=i+1

264仕様書無しさん2010/05/31(月) 13:24:29
あれ?スペースが消えた
あ、全角じゃないとだめなのか
スレ汚ししてすいません

265仕様書無しさん2010/05/31(月) 13:29:59
>>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

266仕様書無しさん2010/05/31(月) 13:31:13
[1から100まで]ってのは仕様だからそれを満たさないと失格だよぅ

267仕様書無しさん2010/05/31(月) 13:38:35
すんません
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で書き直し。

268仕様書無しさん2010/06/01(火) 00:11:02
>>267
問題文を再確認して下さい。
時間がかかってもいいので、落ち着いて。

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz …

269仕様書無しさん2010/06/01(火) 00:26:53
#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;
}

270仕様書無しさん2010/06/01(火) 23:40:39
for i in range(1,100):
  if i%3==0:
    print("Fizz",end='')
  if i%5==0:
    print("Buzz",end='')
  i=i+1

次はLuaでやろうかな

271仕様書無しさん2010/06/01(火) 23:42:58
ミス

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

こうかな?

272仕様書無しさん2010/06/02(水) 00:56:00
それも駄目です。

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分程度で書くとちょっと美しさにかけるな。
もう少し美しさを考えてみる

276仕様書無しさん2010/06/02(水) 03:51:17
てーか>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" }
}

279仕様書無しさん2010/06/02(水) 04:05:52

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
ちょっと綺麗に手直ししてくれてサンクス

281仕様書無しさん2010/06/02(水) 05:21:20
#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とかどういうことなの…

283仕様書無しさん2010/06/02(水) 16:33:50
while条件にi<100とか書いてる奴はクビ
range(1,100)とか書いてる奴もクビ

284仕様書無しさん2010/06/02(水) 16:53:53
ttp://golf.shinh.org/p.rb?FizzBuzz#ranking
ここだな

ちなみに2010/06/02現在だと、
GolfScriptの37文字が今のところ最短
Bashが意外に短くて43文字で二位
Perl6が44文字で三位
Perlが48文字で四位
z80マシンコードが49文字で五位

285仕様書無しさん2010/06/02(水) 17:15:41
>>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バイトよりは、小さくなるけど。

287仕様書無しさん2010/06/02(水) 17:56:24
…出力結果をlha圧縮したら、202バイトになった。
コマンド「lhasa a.lzh」と合わせても、213バイト。

つまり、出力結果>>>>>Esoteric(ネタ言語)>>>>>COBOL

288仕様書無しさん2010/06/02(水) 18:59:05
いや、COBOLってもともと冗長なの目的な言語だし。
なにいってんのおまいら。

289仕様書無しさん2010/06/02(水) 20:58:14
>>286
あくまでもここの仕様でのランキングだから、実質とか考える意味は無い
元々ここのランク対象外なHQ9F+を持ち出す意味も無い
COBOLが冗長なのも当たり前っちゃ当たり前
Bashっつっても実質ほぼGNU sedだから環境依存だろとか、言い出したらきりがない

290仕様書無しさん2010/06/02(水) 21:02:49
つーか言語の優劣ランキングと勘違いしてる奴が痛い

291仕様書無しさん2010/06/03(木) 00:30:49
>>288
「おまいら」っていうか、俺一人。(286=287)
この板、ID出ないんだね。

COBOLネタで釣れると思ったら、極めて常識的な意見ばかりで、がっかりだ。

292仕様書無しさん2010/06/03(木) 01:24:07
今さらCOBOLなんて知らない世代のほうが多いのかもよ

293仕様書無しさん2010/06/03(木) 02:05:48
「釣れると思ったら」は前置と後置で全く印象が変わるな

294仕様書無しさん2010/06/03(木) 20:45:17
ご迷惑おかけします、>>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,

295仕様書無しさん2010/06/04(金) 00:58:12
おめでとうございます

296仕様書無しさん2010/06/04(金) 02:11:38
ジェネレータとか使って関数分けてるのが半端に汎用的で無駄な気もするけど、似た戦略で書くなら、

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

297仕様書無しさん2010/06/04(金) 12:41:52
100が変動することも踏まえて定数にすべきだよな

298仕様書無しさん2010/06/04(金) 18:12:44
for s in fizzbuzz(itertools.count(-100000)):
  print s

とかに変えたりな

299仕様書無しさん2010/06/04(金) 19:06:16
100は所詮デフォルトパラメータだから埋め込んでも問題なくね

300仕様書無しさん2010/06/05(土) 00:08:07
一方、Perlはやっぱりキチガイだった
ttp://d.hatena.ne.jp/sugyan/20100321/1269174230

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

302仕様書無しさん2010/06/06(日) 02:00:29
pythonはコピペに向かない

303仕様書無しさん2010/06/06(日) 23:43:14
プログラマーなら「 変換プログラム」作れるよな?

304仕様書無しさん2010/06/06(日) 23:53:17
>>303
単にスペース置き換えるだけですね?

305仕様書無しさん2010/06/07(月) 23:07:35
俺は超高度なセキュリティ対策用データコンバータープログラム作れるぜ。
これによってXSSという世界的脅威を打破できる。

306仕様書無しさん2010/06/25(金) 15:51:42
dc

[sg[]]sx1[ddd3%d[Fizz]r0<xnr5%d[Buzz]r0<xn*0=xpsg1+dd101>M]dsMx

307仕様書無しさん2010/07/28(水) 21:13:41
あー、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)
}
}



308仕様書無しさん2010/07/28(水) 23:27:57
これは酷い…。

309仕様書無しさん2010/07/29(木) 15:47:08
#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関数の戻り値
 }

310仕様書無しさん2010/07/29(木) 15:52:42
ごめん、 fcint=3, bcint=5, fc=fcint-1, bc=bcint-1で、
ループ内が、fc=fcint, bc=bcintだね。
上のでも正常に動くけど。

3113072010/07/29(木) 19:09:51
>>309
わお。訂正していただけて、マジ参考になりますthx
つか俺は文法勉強しなおしだー・・・

312仕様書無しさん2010/09/19(日) 01:44:08
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.

314仕様書無しさん2010/09/22(水) 00:04:40
>>312
printfの引数、なにそれ?

315仕様書無しさん2010/09/24(金) 21:14:51
とりあえず動かして見ろ

316仕様書無しさん2010/09/25(土) 00:54:15
バグってるって話だろ。
main(i){for(;i-101;puts(i++%5?"":"Buzz")){printf(i%3?i%5?"%d":"Buzz":"Fizz",i);}}

317仕様書無しさん2010/09/25(土) 01:08:43
あ、いけね俺も失敗してら。結果は見た目正常風だとは思うが。

318仕様書無しさん2010/10/22(金) 13:04:46
FizzBuzzを極めてもう2年ほどたちます。
そろそろ採用してくれる会社を紹介してください。

319仕様書無しさん2010/10/23(土) 21:07:58
条件@
  もっとも安く仕上げよ
条件A
  運用コストは電源を入れてから1秒あたり1ドルかかる
  システムは以下の性能
    1. キー入力は1入力あたり1秒かかる
      shiftキー等の押下・離放もカウントする
    2. 文字入力は1文字あたり1ドルかかる
    3. プログラム入力後、コンパイル・実行開始までの秒数はカウントしない
    4. 実行は1行表示ごとに1秒かかる。表示した後同じ行に上書き表示
      するようなものは、上書きの度に1秒かかる
    5. 100行目(Buzz) 表示完了時までをコスト計算する

320仕様書無しさん2010/10/23(土) 23:07:51
Webプログラムじゃないのに{}を省略する理由はなんだろうか?
俺が昔読んだ本では{}は省略するなとあったけど
流行かな?

321仕様書無しさん2010/10/23(土) 23:43:24
>>319
条件が曖昧すぎて、パズルとして成り立ってないよ
プロ奴隷使えば安くなるんじゃねw

>>320
宗教論争

322仕様書無しさん2010/10/24(日) 10:36:38
たしかコンパイルしたら同じだから人間が読みやすいように
括弧でわかりやすく書くとあったけど。
そういう俺もめんどくさいとき括弧を省略するけど。

323仕様書無しさん2011/01/02(日) 07:37:02
Cのifとかの話なのかなぁ
LinuxカーネルやGnuみたいにメジャーなところでも、ifの{}は複文じゃなければ必ず
省略すること(ネストした時を除く)というルールを採用してる超大規模コードも
あるのよ
オフサイドルールで成り立っちゃってる言語もあるくらいだから、本当は言うほどの
危険は無いのかもしれん、と思うようになってからは、省略派に鞍替えしたというか、
元々省略してた(それでバグった記憶も無かった)ので省略派に戻ったというか

324仕様書無しさん2011/01/14(金) 20:35:03
迷路の最短経路を求める問題が、とあるブログで出題された
http://okajima.air-nifty.com/b/2010/01/post-abc6.html
人材獲得作戦・4 試験問題ほか
まともなプログラマーなら幅優先探索ぐらい知ってるから当然のことながら解くことが出来るよな

325仕様書無しさん2011/01/18(火) 02:22:56
↑「幅優先探索」とか、答え書かないでよ…。

でも、単純な幅優先なら、計算量爆発するよね。
25分〜3時間か。FizzBuzz位ならともかく、やってらんない。ギブアップだわ。寝る。

3263252011/01/18(火) 02:37:27
ゴメン、枝切りすれば、それなりに実用的な速度にはなりそうではあるね。(全部スペースとかでない限り。)
まぁ、なんか面倒臭そうなので、プライド捨てるわ。
実行時間無視の書き捨てコードとかじゃ、ダメ扱いされそうだし。

3273252011/01/18(火) 03:48:46
大学は情報系でないので、力技。(全てのセルに、最初のポイントからの位置を書き込み。)
予想通り、デバッグで時間取られる。
そもそも、やる気ないから、コードは汚いし。

バカバカしくなってきたから、中断する。
「まともなプログラマーなら〜」って言葉に、どうしても反応してしまう。
挑発に乗っちゃうクセを直さないとね。

3283252011/01/18(火) 03:54:46
何かイライラする。
さらっと数行で書けるものならともかく、意味の無いコード、1時間も書かされるとちょっと。
別に、芸のある出題でもないし。
スルーして、フリーソフトのメンテしとくんだったと後悔。

3293252011/01/18(火) 03:56:46
一応、Cで、セルに番号振るところまで書いた。
デバッグ含め、1時間半か。
ちょっと無能かもしれんが、馬鹿にするなら、馬鹿にしてくれ。

3303252011/01/18(火) 04:44:16
あ、出来た。
嫌々やるのやめて、コード整理したら、出来た。

100ステップって、ちょっと簡単に書き捨てられる量じゃない。
頭でアルゴリズム簡単に思いついても、デバッグに時間がかかるし。
「プログラマーなら出来なきゃ困る」なら、実際に書かなければならないんだから、時間のことも考えて欲しい。

あと、ブログで示されていたアルゴリズム、文系には辛いよ。
こっち系だとは思ったけど、昔、本で名前知った程度だから、ググルや参考書なしでは無理。力技しかなかった。

まあ、>>324は、スルー力検定だったのだなw

331仕様書無しさん2011/01/18(火) 12:40:58
リアル厨房の時に、マイクロマウスでやったな。
8bitマイコンでモータやらセンサやらの面倒を見つつ、
迷路脱出させてた。
出口が隅じゃなく、内部に有ると泣いたw

3323252011/01/18(火) 15:33:00
>>331
あれって、総当り方式じゃん。左側か右側かの壁伝ってくんだっけ?


>>324の問題って、なんか、「求職者を見下したい」感がヒシヒシ伝わってきて嫌。

プログラムって、もっと、大らかに、何日もかけて、じっくり楽しむべきものなんだよね。
3時間とか、時間区切ってコーディングするのは、仕事でもない限り、邪道。
マイコンロボを試行錯誤して動かしたりとか、何日も考えてパズルの最適アルゴリズムを見出したりとか。

333仕様書無しさん2011/01/18(火) 20:42:37
>あれって、総当り方式じゃん。左側か右側かの壁伝ってくんだっけ?
だから、それだと出口が内部に有ると駄目だし、ループしてる柱みたいな
場所が有ると永久ループ。

一応、自分が通った経路を記憶しておいてマッピングしながら移動する
のだが、タイヤのスリップとかセンサの誤検知とか有るので、信頼度の
重み付けしながらファジーにマッピングして行く。

汚部屋と言う名の迷路を掃除するロボット、ルンバも作れなさそうだな。
中国製ランダムウォークのパチ物に負けるぞ。

334仕様書無しさん2011/02/06(日) 02:07:41
>>324
ためしにやってみた
http://hibari.2ch.net/test/read.cgi/tech/1215352849/294

>>325->>330
きにすんな
幅優先探索という言葉は知っていてもロジックを忘れてしまったから
解くのに3時間ぐらいかかった

ところで何のフリーソフト作ってる?
すごく気になるから教えて
使ってみたい

335仕様書無しさん2011/02/08(火) 23:42:25
>>325
幅優先探索の場合、計算時間より計算空間の方が先に破綻するんじゃ
ないかな。特にRAMの容量に限りの有る組込み制御の場合。
8bit時代は、オセロとか将棋も深さ優先探索してた。例外は森田和郎
ぐらいで、これもSSS*探索とαβ探索のハイブリッド。

336仕様書無しさん2011/03/07(月) 11:10:02.94
なつかしい話題発見。
全セル分のワークと若干のキューが確保できればいいんだから
そんなにメモリ圧迫するってほどでもないような。
といっても対象フィールドの広さにもよるだろうが、
例の出題程度の広さだったら破綻の心配はまずしなくていいでしょう。
各セルごとにゴール、スタート、障害物、未踏地、
既に歩いた地(「来た方向」の保持兼用)の区別がつけばいいので
ワークは各セルごとに1バイト(最低4ビット)あれば十分足りるし。
でも深さ優先探索しか知らなかった(書いたことがなかった)ので
試しに解いてみた時にはちょっと手こずってしまった。
ちなみに件の例題では深さ優先探索でも実用時間内に解けてしまう。
これって結構ワナかもな、と思った。

337仕様書無しさん2011/03/18(金) 10:49:36.47
空気読まずに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))

338プログラマ志望の経済学部4年生2011/06/10(金) 16:54:07.54
プログラミング始めて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;
}

339仕様書無しさん2011/06/11(土) 00:06:20.06
どうですかって言われても
まぁいいんじゃね
あえて言えば平凡すぎて面白みがなくてつまらん

340仕様書無しさん2011/06/11(土) 03:43:41.34
いい機会なんで?演算子を使ってみよう

341仕様書無しさん2011/06/11(土) 10:56:59.64
まいど = まいど?まいどぉ:まいどぅ

342仕様書無しさん2011/06/11(土) 11:19:06.80
こうかな
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部分を自分で書けばもっと速くなる

343仕様書無しさん2011/06/11(土) 11:31:36.95
こうすればもっと早いな
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]);
}
}

344仕様書無しさん2011/06/11(土) 17:32:44.94
無限ループするじゃん。

345仕様書無しさん2011/06/11(土) 18:10:12.16
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);
}

346仕様書無しさん2011/06/11(土) 21:04:59.44
確認してないからわからんがかなり速の筈

347仕様書無しさん2011/06/11(土) 21:07:23.93
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'

348仕様書無しさん2011/06/11(土) 21:09:13.71
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

349仕様書無しさん2011/06/12(日) 02:55:39.33
FizzBuzzはできて当たり前、がんばるもんじゃないんだけどな。
「どうだっ」みたいな人が会社にいて困った。

350仕様書無しさん2011/06/12(日) 12:27:40.95
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はよくわからんのではずしたわ

351仕様書無しさん2011/06/12(日) 18:18:48.82
平凡

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__

352仕様書無しさん2011/06/13(月) 23:12:21.79
1.可変性
  このプログラムが実用になった場合、標準出力以外のものに出すよう変更の必要があると思われるが、簡単にできるよう考慮されているか
  倍数が3のみで5なしになったら?逆に両方残したまま7が増えたら?条件変わってもすぐに変更できるか
2.動作速度
  十分速いかあるいは速度アップの必要が生じた場合、どこをいじればよいか?具体的に内部でどういう動作が 行われているかわかっているか

 等をワシなら気にするな
最初黙っててできた後から上記のような質問してもすぐに対応したら、かなりできる奴だと思うわ

353仕様書無しさん2011/06/14(火) 01:46:04.12
いや、そもそも「かなりできる」奴か見るためのテストじゃないし。
がんばるもんじゃないったらスレ終わりじゃん。ここマ板だし。
こんな書き方もある、ってお遊びだよ?言わせんな恥ずかしいw

354仕様書無しさん2011/06/15(水) 00:34:09.43
♪フィズバズフィズバズよよいがよい
♪フィズバズフィズバズどどんがどん
♪三の倍数の時はフィズ
♪五の倍数の時はバズ
♪三と五の三と五の
♪公倍数ではフィズバズ印字
♪フィズバズ音頭でどどんがどん


















そこのズブズブの日本人のあなた
自然にメロディが浮かんで来たでしょ

355uy ◆yyC0rYWEq2 2011/06/16(木) 22:02:56.19
メタでかけよ

356仕様書無しさん2011/06/17(金) 00:03:58.61
>>355
お手本プリーズ

357仕様書無しさん2011/06/17(金) 10:22:50.20
メタと付く言語はMLとmetafontしか知らんな…

358仕様書無しさん2011/06/17(金) 16:55:18.24
メタで書けば3や5プリントしてもいいのかw

359仕様書無しさん2011/07/07(木) 21:47:26.61
haskellとcで!!と思ったら、すでに書かれてた。。。Orz
haskellの内包表記で書けないか考えてみる

360仕様書無しさん2011/07/08(金) 12:32:30.06
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);
        }
    }
}

361仕様書無しさん2011/07/08(金) 20:37:40.13



これがどう問題なのか
誰か詳しく教えてくれ

913 :名無しさん@12周年 :sage :2011/07/02(土) 21:53:57.61 ID:vEYqWa5o0
>>871
アメリカで例えると
オバマ大統領がアルカイダにいる、ビンラディンの家族に資金援助していたという事で騒ぎになってる。

オバマがこっそり9.11実行犯の釈放嘆願書に署名
         ↓
オバマ「私ははめられた!!うっかり署名してしまった!  私は卑怯で残忍なテロリストを絶対許さない!!」
         ↓
オバマはイスラム原理主義の団体から多額の寄付を受け取っていた←追加分
         ↓
オバマがこっそりビンラディンの家族に毎年、計6250万円献金
         ↓
クリントンもこっそりビンラディンの家族に1000万円献金 ←ここが鳩山分★
         ↓
アメリカのメディアは全く報じず
ねーよwww





362仕様書無しさん2011/07/17(日) 17:04:57.69
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

363仕様書無しさん2011/07/21(木) 01:29:31.99
ホットスーププロセッサなら

for n,1,100:s="":if n\3=0{s="Fizz"}if n\5=0{s+"Buzz"}if s=""{s=n}mes s:next

364仕様書無しさん2011/07/21(木) 12:30:50.58
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();
        }
    }
}

3653622011/07/21(木) 23:31:27.81
>>363
そんなかんたんにいくのね・・・

366仕様書無しさん2011/08/01(月) 10:21:21.51
クソコードを書きたくなったから書いてみる
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))

367仕様書無しさん2011/08/01(月) 10:23:28.39
\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
見返したら色々間違えてる。なんかカオス。
俺赤面。こんな時間に眠い目こするからいけなかったんだ(言い訳

もう寝る。お休み

370仕様書無しさん2011/08/07(日) 07:29:01.96
本物のマなら、寝ずにデバッグする。

371仕様書無しさん2011/08/07(日) 17:07:39.64
真のマなら、寝て起きてからデバッグする。

372仕様書無しさん2011/08/07(日) 18:05:59.34
>>371
それは正しい

373仕様書無しさん2011/08/07(日) 18:50:41.19
俺ぐらいになると寝てる間にデバッグするね

374仕様書無しさん2011/08/07(日) 20:10:30.23
>>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 実行速度

可変性を重視すると、その分実行速度が落ちる。

378仕様書無しさん2011/08/25(木) 19:01:16.31
>>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","  "};

よかった。
実行効率どころか可読性まで大きく犠牲にして、
まだ見ぬ要求変更の可能性に幅広く対応したコードを書いておいて…

381仕様書無しさん2011/08/26(金) 17:24:33.68
そんなピンポイントな仕変出す客おるかいw

382仕様書無しさん2011/08/26(金) 17:42:45.50
105(3,5,7で割れる)とかどうするんだろ、って思ったけどたぶんBuzzGizzなんだろうなぁ

直接"FizzBuzz"とか書かず、割れた数から出力すれば楽だと思ったんだが、そうするとFizzBuzzGizzになっちゃうんだよなぁ
Fizz,Buzz,…の数だけフラグ用意して、立てたり立てなかったりしつつ、その後3本以上になったら小さいほうを折って…って面倒だわ

383仕様書無しさん2011/08/26(金) 19:36:59.46
その前にギャラの話をしようじゃないか…

384仕様書無しさん2011/08/26(金) 21:33:38.93
つーかその程度の変更なら、丸々書き換えても30分も要らんだろw

385仕様書無しさん2011/08/27(土) 00:02:00.57
面倒なだけで興味をひかないネタだな
こういうところにもその人のスキルって出るよな
よって>>379は低スキルのバカグラマー

386仕様書無しさん2011/08/27(土) 02:50:52.15
明らかに>>375-376に都合のいいように考えただけの仕様だもんな

387仕様書無しさん2011/08/27(土) 02:55:14.40
3で割り切れる時は3倍、5で割り切れる時は5倍にして表示してね、という簡単な変更要求が来た途端、
可変性が高いつもりでただ重いだけの無駄コードと化すしな

388仕様書無しさん2011/08/27(土) 02:55:56.16
可読性が落ちてることが一番問題じゃね?

389仕様書無しさん2011/08/27(土) 15:09:54.05
この程度の規模のコードで、コードの再利用を考慮しすぎるのはムダ。
仕様変更に伴って書き直した方が早い。

>>1のリンク先には
> ちゃんとしたプログラマであれば、これを実行するプログラムを
> 2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい?
> コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。
> 自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。
とある。

2分とかからずに書き出せる程度の規模のコードで再利用とかムダムダ。
仕様変更があったら数分かけて書き直せ。

390仕様書無しさん2011/08/27(土) 21:59:59.72
int sizeofarray = sizeof(a) / sizeof(a[0]);
くらい書け(もちろん宣言の順序も入れ替えて)、と思ったけど、どっちにしろ配列サイズが一致しないバグ
を抱える可能性が気持ち悪いから、本気でやるなら三次元配列かstruct/classの配列にすべきか
あと、末尾のダミー文字列が気持ち悪すぎるけど、これ無くても鼻から悪魔出ないよね?

でも実際問題としては>>389に完全同意

391仕様書無しさん2011/08/27(土) 22:08:29.33
unsignedも付けろ

392仕様書無しさん2011/08/27(土) 23:12:30.03
>>391
追加料金が1人月発生しますが良いですか?

393仕様書無しさん2012/02/09(木) 02:03:42.02
さあ、忘れたころにやってくる。

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.

395仕様書無しさん2012/02/13(月) 22:10:32.70
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

397仕様書無しさん2012/02/14(火) 20:47:20.57
>If i Mod 10 = 0 Then
???

398仕様書無しさん2012/02/14(火) 21:31:53.79
>>397
10個ごとに改行入れるってことだろ?見やすくするために

399仕様書無しさん2012/02/14(火) 21:53:06.43
引用のおっさんここにもいるのか

400仕様書無しさん2012/02/16(木) 03:14:53.62
なんだ 引用のおっさん て?

401仕様書無しさん2012/04/09(月) 23:59:48.08
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" など)で。

402仕様書無しさん2012/04/13(金) 07:19:33.65
マクロでもいいの?

403仕様書無しさん2012/04/18(水) 09:12:04.42
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);

405仕様書無しさん2012/10/07(日) 03:27:33.68
#!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

406仕様書無しさん2012/10/07(日) 03:28:19.30
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"

407仕様書無しさん2012/10/07(日) 06:58:51.71
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';

とかネタで書いてたら、こういう発想のコードに実際関わる羽目に遭った時の記憶が蘇って嫌になった

408仕様書無しさん2012/10/07(日) 09:37:12.06
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';

でいいだろうにな

409仕様書無しさん2012/10/08(月) 11:02:35.21
そうじゃねぇだろwww

410仕様書無しさん2012/10/09(火) 00:21:09.06
>>407
三菱MDISに逝かされた時に、リアルでそんなのが3千行ぐらい延々と続く
ソースコードの改修を押し付けられたな…・。

もう二度と逝かない。

411仕様書無しさん2012/10/09(火) 01:14:03.88
平気で0〜99とか1〜99とかになってるコードの多さに戦慄するスレ

412仕様書無しさん2012/10/09(火) 21:21:50.29
Duff's Deviceはふつくしいけど見たくない。

413仕様書無しさん2012/10/10(水) 00:57:25.52
>>410
なんか理由あってそうやってんのかな?それとも池沼が作ったのか。

414仕様書無しさん2012/10/10(水) 01:25:54.46
世界には池沼が書いたコードが溢れてる
マジで溢れかえってる

415仕様書無しさん2012/10/10(水) 15:20:49.27
こんなcaseハックテクもある。

aho(int *crLine) {

switch(*crLine){
*crLine =__LINE__; return ; case __LINE__:;
*crLine =__LINE__; return ; case __LINE__:;
*crLine =__LINE__; return ; case __LINE__:;
}

}

416仕様書無しさん2012/10/11(木) 02:01:10.28
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;
    }
  }
}

417仕様書無しさん2012/10/11(木) 04:33:26.72
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

418仕様書無しさん2013/09/22(日) 14:22:28.53
twitter.com/paiza_official
paizaの公式アカウントの背景に
fizzbuzz問題を解け。ただし、剰余は使わないこと
という画像があったんだが、剰余を使わないで解くことってできるの?

419仕様書無しさん2013/09/22(日) 14:38:34.16
剰余演算子を使わない、ならこのスレにもいくつかある。

420仕様書無しさん2013/09/22(日) 16:05:44.58
>>419
探してみたら、確かにあった
MOD使わなくても解けるとは

421仕様書無しさん2013/09/22(日) 17:14:41.12
剰余を使わない、というか除算コストを嫌ったらこんな感じかなぁ

#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");
  }
 }
}

422仕様書無しさん2013/09/22(日) 20:22:11.46
除算命令を持たない8bitマイコンなんかだったら有りだな。

423仕様書無しさん2013/09/22(日) 21:24:44.09
実際に >>422 であるならともかく、
倍数が関わる問題を、剰余を使わずに解決しようyとするのは
基本的にアホではないのか

424仕様書無しさん2013/09/23(月) 03:03:14.11
>>423
エラトステネスの篩 disってんの?

425仕様書無しさん2013/09/23(月) 15:25:42.14
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>");
}

426仕様書無しさん2013/09/24(火) 05:46:22.13
>>424
エラトステネスの篩って、普通足し算でやるものかい?

427仕様書無しさん2013/09/24(火) 09:07:38.52
普通はな。チミの世界では違うのか?

428仕様書無しさん2013/09/24(火) 11:49:55.37
>>427
配列だと足し算、リストだと割り算、かな。

429仕様書無しさん2013/09/24(火) 16:32:19.19
節子、それエラトステネスの篩ちゃう>後者

430仕様書無しさん2013/09/28(土) 04:30:26.70
俺が一番最初に作ったのがカウンタ使う方法だった。
剰余演算を使う人がすんごく多いのに逆にちょっと驚いたよ。

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");
}

431仕様書無しさん2013/10/07(月) 07:16:35.86
/* 混ぜて糞コードにしてみた */
#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;
  }
 }
}

432仕様書無しさん2013/10/12(土) 00:38:14.19
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にでも訂正

437仕様書無しさん2013/10/17(木) 09:34:59.61
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 &amp;&amp; j5==0
mes="fizz"
elsif j5==1 &amp;&amp; j3==0
mes="buzz"
elsif j3==1 &amp;&amp; j5==1
mes="lenny kravitz"
else
mes=cnt
end
puts mes
cnt+=1
j3,j5=0,0
end

438仕様書無しさん2013/10/18(金) 03:30:13.39
モジュロ演算子使う奴=機能豊富な時代の現代っ子
割って切り上げた値と割った値を比較する奴=浮動小数点除算が早い時代の現代っ子
3つカウンタを使う奴=ベーシックなやり方にこだわるオッサン
文字列をメソッドで比較する奴=オブジェクト至高の現代っ子
再帰関数にする奴=スタックは無限にあると思ってる現代っ子
"Fizz"と"Buzz"両方出すときは1行?2行?と聞く奴=ナイス質問だが今回は気にすんな。
表示文字列と改行コードを別に出力する奴=サンプルだから気にすんなって。
出力を区切らない奴=それでもいいんだけどちょっとは気にしろよ。
asmキーワード使うやつ=素直にニーモニックだけ書けよ。
配列に100個値を入れておいて無判定で順番に出す奴=速度命の変態乙。
"Fizz"/"Buzz"と"FizzBuzz"を別に判定する奴=新人乙。
IDENTIFICATION DIVISIONから書く奴:先輩乙。
73桁目からコメントの奴:大先輩オッスオッス。

439仕様書無しさん2013/10/18(金) 13:13:30.65
Squeak Smalltalk
(1 to: 15) collect: [:n | ((#('' '' Fizz) atWrap: n), (#('' '' '' '' Buzz) atWrap: n)) ifEmpty: [n]]

440仕様書無しさん2013/10/19(土) 14:23:53.28
あー、勢いで書いたら間違ってたわ。
割って切り上げた値と割った値を比較
じゃなくて
割って切り捨てた値と割った値を比較
だわ。
逝ってくるorz

441仕様書無しさん2013/10/22(火) 00:39:17.71
フィボナッチ数列でFizzBuzzしようぜ

442仕様書無しさん2013/10/22(火) 10:39:03.00
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')

443仕様書無しさん2014/06/10(火) 20:23:30.08
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

445仕様書無しさん2014/12/04(木) 21:48:58.99
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

446仕様書無しさん2015/03/11(水) 23:29:00.62
<?php
echo '1 2 Fizz 4 Buzz 6 7 8 Fizz Buzz 11 12 13 14 FizzBuzz ・・・

447仕様書無しさん2015/03/27(金) 16:55:02.57
紙に直書きで人に見られながらだと
FizzBuzzが限界です

448仕様書無しさん2015/07/30(木) 17:34:29.19
フーターズコンテストジャパンで二位だったSerinaが、
黒人に輪姦されてる動画が流出したようですね。
鮮明だし最後は狂ったように泣きながらイキまくってる。
ちんこたった。
http://subject24.xyz/black025.jpg

449仕様書無しさん2015/08/23(日) 17:36:10.01
#include <iostream>
using namespace std;
int main()
{
for(int i=1; i<=100; ++i){
if(i%3 &amp;&amp; i%5) cout << i;
else{
if(!(i%3)) cout << "Fizz";
if(!(i%5)) cout << "Buzz";
}
cout << endl;
}
return 0;
}

450仕様書無しさん2016/01/30(土) 19:50:18.24
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. YARANAIKA.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 WORKING-STORAGE SECTION.
000600 01 I  PIC 9(3).
000700 01 HENSHU-RYOIKI.
000800  05 NUM  PIC ZZZ9.
000900 01 DUMMY-RYOIKI  PIC X(1).
001000 01 HYOJI-RYOIKI  PIC X(8).
001100 PROCEDURE DIVISION.
001200   PERFORM VARYING I FROM 1 BY 1 UNTIL IDX-01 > 100
001300    MOVE SPACE TO HYOJI-RYOIKI
001400    IF FUNCTION MOD(I 3) = ZERO
001500     MOVE

451仕様書無しさん2016/01/30(土) 19:51:21.22
001500     MOVE "FIZZ" TO HYOJI-RYOIKI
001600    END-IF
001700    IF FUNCTION MOD(I 5) = ZERO
001800     STRING
001900      HYOJI-RYOIKI DELIMITED BY SPACE
002000      "BUZZ" DELIMITED BY SIZE
002100      INTO HYOJI-RYOIKI
002200     END-STRING
002300    END-IF
002400    IF HYOJI-RYOIKI = SPACE
002500     MOVE I TO NUM
002600     UNSTRING
002700      HENSHU-RYOIKI DELIMITED BY ALL SPACE
002800      INTO DUMMY-RYOIKI HYOJI-RYOIKI
002900     END-UNSTRING
003000    END-IF
003100    DISPLAY HYOJI-RYOIKI
003200   END-PERFORM.
003300   STOP RUN.

新着レスの表示
レスを投稿する