X



プログラマーなら「FizzBuzz問題」解けるよな?
■ このスレッドは過去ログ倉庫に格納されています
0001(´・ω・`) ◆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

言語自由
0003仕様書無しさん
垢版 |
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_____, -ー‐‐‐‐' ´      `ー'
0004仕様書無しさん
垢版 |
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
0005仕様書無しさん
垢版 |
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");
・・・・
}
0006んじゃVBA
垢版 |
2008/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
00084
垢版 |
2008/04/29(火) 22:15:06
カウント変数の初期化位置ミスってるなww
無限ループだわ(´・ω・`)

動くか知らんが
0018仕様書無しさん
垢版 |
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);
}
}
0021仕様書無しさん
垢版 |
2008/04/30(水) 10:55:51
Fizz
0023仕様書無しさん
垢版 |
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
0024仕様書無しさん
垢版 |
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
}
0026(´・ω・`) ◆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;
}
0027仕様書無しさん
垢版 |
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());
}
}
}
0028仕様書無しさん
垢版 |
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
0029仕様書無しさん
垢版 |
2008/05/01(木) 22:45:13
鬼才現る!って言いたくなる様なコードを書いてくれよ
0031仕様書無しさん
垢版 |
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();
 }
}
0032仕様書無しさん
垢版 |
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);
}
0033仕様書無しさん
垢版 |
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);
 }
}
0034仕様書無しさん
垢版 |
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
0037仕様書無しさん
垢版 |
2008/05/02(金) 13:31:58
このスレでは、3の倍数のレスでは「Fizz」、5の倍数のレスでは「Buzz」と書き込み、
それ以外ではレス番号を書き込んでください。
0038仕様書無しさん
垢版 |
2008/05/02(金) 13:46:51
3の倍数か3を含む数字の時だけアホになってください。
0042仕様書無しさん
垢版 |
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);
}
}
}
0043仕様書無しさん
垢版 |
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;
}
004443
垢版 |
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;
}
0045仕様書無しさん
垢版 |
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;
}
0047仕様書無しさん
垢版 |
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" );
}
0048仕様書無しさん
垢版 |
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);
0049仕様書無しさん
垢版 |
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();
}
}
}
0052仕様書無しさん
垢版 |
2008/05/05(月) 20:42:11
fiz
0053仕様書無しさん
垢版 |
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);
}
}
0054仕様書無しさん
垢版 |
2008/05/05(月) 23:41:08
X86アセンブラ、C、C++、Java、VB辺りが出たので他のないすかー?

ぴゅう太とかリアルで動かしてくれたら泣ける。
0056仕様書無しさん
垢版 |
2008/05/05(月) 23:47:01
>>55
つってもCやVB系は書いたし他のメジャーなんも出たからさぁ。
変な奴こねえかなぁ。そういやDelphiねーな。
0057仕様書無しさん
垢版 |
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;
}
?>
0059仕様書無しさん
垢版 |
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)) 向き。
」実行。
0060仕様書無しさん
垢版 |
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
0061仕様書無しさん
垢版 |
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
0065仕様書無しさん
垢版 |
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;
}
?>
0069仕様書無しさん
垢版 |
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";
0071仕様書無しさん
垢版 |
2008/05/06(火) 12:38:34
「FizzBuzz問題」でググッたけど、どのブログも「この問題をどう解くか?」
という話になっていて、元の話の「プログラムを書けない奴をどうするか?」
と言う話はほとんど出てないのな。

日本じゃどの現場でも、プログラムが全く書けない奴を抱えて困った経験など、
してないんだろうか?
0072仕様書無しさん
垢版 |
2008/05/06(火) 13:14:23
>>71
うんそうだよw極例だが
部長は設計できない、実装できない、捏造完璧
課長は設計嘘っぽい、実装嘘っぽい、報告うまい
主任は実装できそう、設計できない、ごますりうまい
正社員は実装できそう、ごますりうまそう
派遣は実装できる、設計もできる

プログラムの書ける人が困るのが日本式だぜw
0074仕様書無しさん
垢版 |
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)))
0075仕様書無しさん
垢版 |
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
007875
垢版 |
2008/05/06(火) 20:45:28
>>77にいじめられたぉ

助けてほしいぉ
0079可能な限り長く書いてみたw
垢版 |
2008/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 = "";
0080仕様書無しさん
垢版 |
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;
}
0081仕様書無しさん
垢版 |
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;
0082仕様書無しさん
垢版 |
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;

}//環境無いからデバッグして無い。もしかしたら動くかも?
0083仕様書無しさん
垢版 |
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
0084仕様書無しさん
垢版 |
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
0085仕様書無しさん
垢版 |
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); }
0086仕様書無しさん
垢版 |
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);
}
0087仕様書無しさん
垢版 |
2008/05/07(水) 05:36:56
============================
俺用しおり
             ここまで暗記
============================
0088仕様書無しさん
垢版 |
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
0089仕様書無しさん
垢版 |
2008/05/07(水) 18:02:17
コードを極限まで短くしたのを見てみたい。
言語はCで
0090仕様書無しさん
垢版 |
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);}

これ以上短くなるかな
0091仕様書無しさん
垢版 |
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);}
0093仕様書無しさん
垢版 |
2008/05/07(水) 21:28:49
int i;は外に出してグローバルにしないと初期値が不定になるぞ。
0094仕様書無しさん
垢版 |
2008/05/07(水) 21:33:35
パソコン買って半年の超初心者の俺が何故かこのスレに来ました。


ここにいる人達はどう考えても天才ですよね?
0095仕様書無しさん
垢版 |
2008/05/07(水) 23:09:24
>94
いいえ違います

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

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

0096仕様書無しさん
垢版 |
2008/05/07(水) 23:41:04
超初心者がこんなスレにたどり着いた方法を知りたい
0097仕様書無しさん
垢版 |
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で、それを日本語に訳しただけって感じがするよ、ひまわり。
コンピュータからして英語圏発祥だから仕方ないのかなあ。
0098仕様書無しさん
垢版 |
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))
0099仕様書無しさん
垢版 |
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
0101仕様書無しさん
垢版 |
2008/05/14(水) 01:21:02
久しぶりにJavaでFizzBuzz問題のプログラムを書いてみたら、131バイトで書けた。
133バイトが最小だと思ってたけど、何か言語仕様変わったのかな。

試しにanarchy golfに登録してみたら、ちゃんと登録できたし
http://golf.shinh.org/p.rb?FizzBuzz
0102仕様書無しさん
垢版 |
2008/05/14(水) 23:06:37
main(i){
for(;i<101;puts(i++%5?"":"Buzz"))
printf(i%3?i%5?"%d":"":"Fizz",i);
}
0103仕様書無しさん
垢版 |
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
0106仕様書無しさん
垢版 |
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ってのはどんなバケモノコードか見てみたいな。
0108仕様書無しさん
垢版 |
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");
}}

最初の改行が削れなかった。
0109仕様書無しさん
垢版 |
2008/05/23(金) 02:00:16
なんで未初期化のまま使ってるんだろうと思ってたが、
mainの第1引数であることに今さら気づいたorz
0110仕様書無しさん
垢版 |
2008/05/23(金) 08:30:46

0111仕様書無しさん
垢版 |
2008/05/23(金) 23:39:50
コードサイズよりバイナリサイズを削ろうよ
とか思う俺はKY?
0113仕様書無しさん
垢版 |
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>
0114仕様書無しさん
垢版 |
2008/05/24(土) 12:38:59
main(i){while(i<101){printf("%d\r%s%s\n",i++,i%3?"":"Fizz",i%5?"":"Buzz");}}
0116仕様書無しさん
垢版 |
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文字ってどうやるのだろう。。
0117仕様書無しさん
垢版 |
2008/05/25(日) 15:14:37
¥rを使うダーティーな奴がありなら、これでもいけたよ。
main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3?"%d¥r":"Fizz",i);}
0120仕様書無しさん
垢版 |
2008/05/30(金) 04:02:57
熊本県八代市のこともたまには思い出してあげてください。
0121仕様書無しさん
垢版 |
2008/06/01(日) 21:31:33
どう見ても京都府八幡市です。
本当にありがとうございました。
0127仕様書無しさん
垢版 |
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;
    }
}
0128仕様書無しさん
垢版 |
2009/01/14(水) 13:48:08
ほしゅ
0130仕様書無しさん
垢版 |
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;
}
0131仕様書無しさん
垢版 |
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
0132仕様書無しさん
垢版 |
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
]
0133仕様書無しさん
垢版 |
2009/01/19(月) 10:19:53
J

wd&>((0 i.~15 3 5|]){((;;])'Fizz';'Buzz'),<)"0>:i.100
0136仕様書無しさん
垢版 |
2009/01/20(火) 09:58:08
まったくだ。死ねばいいのにね。
このコピペしてる莫迦。
0137仕様書無しさん
垢版 |
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」の条件はうすうすばれているようですが・・・・。
0140仕様書無しさん
垢版 |
2009/01/23(金) 11:48:33
>>137
一緒に音ゲー板に帰るぞ

ていうかとっくに解析されてるのにいまさらマ板に持ってくるなよ
0141仕様書無しさん
垢版 |
2009/01/23(金) 12:26:53
「16進×35バイト」らしき元データが35文字になるとか
見え透いてる。
0142仕様書無しさん
垢版 |
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; }
0143仕様書無しさん
垢版 |
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;}
{
?>
0146仕様書無しさん
垢版 |
2009/01/25(日) 17:48:27
>>144
thx
>>145
そうします。。thx
0147仕様書無しさん
垢版 |
2009/01/25(日) 18:42:08
2chに書き込むときに消えただけかもしれないけど、
ちゃんとインデントして、括弧の位置をそろえると、
無駄な作業を減らせるよ
0150仕様書無しさん
垢版 |
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
0152仕様書無しさん
垢版 |
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);
}
0153仕様書無しさん
垢版 |
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
0154仕様書無しさん
垢版 |
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);
    }
}
0155仕様書無しさん
垢版 |
2009/03/12(木) 05:37:27
むしろ、よくそんな書き方が出来たなと言いたい
フツーに書いた方が簡単な希ガスw
0158仕様書無しさん
垢版 |
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";
}

恥ずかしいくらい単純すぎるかな…
0161仕様書無しさん
垢版 |
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();
        }
    }
}
0162仕様書無しさん
垢版 |
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") ;
 }
}
0163仕様書無しさん
垢版 |
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();));
}
0164仕様書無しさん
垢版 |
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();));
}
0166164
垢版 |
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はどうやって宣言すればいいの?そもそも無理なの?
0167仕様書無しさん
垢版 |
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)])
0168仕様書無しさん
垢版 |
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)
0169仕様書無しさん
垢版 |
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();
        }
    }
}
0170仕様書無しさん
垢版 |
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;
}

初心者がちょっとそれっぽく書いてみた
0171仕様書無しさん
垢版 |
2009/05/16(土) 22:57:37
>>170
それっぽくはあるけど、良いコードじゃないぞ
実装するなら、実装意図を明確にするべきで、

if (!(i%15))

この記述で無理矢理論理判断に持ち込むのは、良くない例
たしかにコレでも動くけども、
このコードでは 15で割ったあまりが ==0である、ことに意味がある
関数の戻りが0/1で戻ってくるから、それを論理判断にしているわけではない
そこをはき違えると、意図が不明確で、他人が読みづらいコードになる
0173仕様書無しさん
垢版 |
2009/05/17(日) 23:32:19
XXでは当たり前、で思考停止してるから、糞コードが減らないんじゃね?w
0175仕様書無しさん
垢版 |
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);
}
}

初心者が意見を取り入れて普通に書いた
0176仕様書無しさん
垢版 |
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()
{
0177仕様書無しさん
垢版 |
2009/05/20(水) 20:59:00
途中で書き込んじまったorz
修正するのもメンドクサイから放置しよ。
0178仕様書無しさん
垢版 |
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;
};
}
0179178
垢版 |
2009/06/20(土) 18:19:20
あー、
100個の結果をそのままprintfした方が早いか... orz
私がバカでした
0180仕様書無しさん
垢版 |
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"
);
};
0181仕様書無しさん
垢版 |
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);}
0183仕様書無しさん
垢版 |
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
0184183
垢版 |
2009/08/04(火) 20:03:18
>>183はDOS窓用バッチ

0185cobol
垢版 |
2009/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.
0187仕様書無しさん
垢版 |
2009/09/16(水) 20:54:30
SQL見た時、なんか冗長だな〜COBOLみて〜、と思った。
0188仕様書無しさん
垢版 |
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;
}
0189仕様書無しさん
垢版 |
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;
}
0190仕様書無しさん
垢版 |
2009/09/17(木) 21:36:42
なんでこの問題が有名なのかイマイチわからんのだが、
重複さえ気をつければ他に別にひっかけがあるようなもんでは無いよね。
0191仕様書無しさん
垢版 |
2009/09/17(木) 22:03:23
引っかけがあるように見えるので、しばらく考えるが、
実は、引っかけがないことに気付く。

これが、最大の引っかけ。
0192仕様書無しさん
垢版 |
2009/09/17(木) 23:17:09
>>190-191
そもそもプログラマとしての素養を見るための問題の例として挙げられたものだから
引っかけとか特に必要ないんだよ
0193仕様書無しさん
垢版 |
2009/09/18(金) 23:12:18
普通のプログラマなら2分以内で書けて当たり前という程度には簡単。
0194仕様書無しさん
垢版 |
2009/09/19(土) 14:18:17
「2分」ってよく言われるけど、
「問題用紙をめくって下さい」から、「動作確認終わりました」まで、
必ずしも2分以内に終わらないよ。
特に、自分が普段はあまり使っていないような言語では。

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

2分以内と言ってる人は、何度も書いてるから、2分で出来るようになっただけ。
0196仕様書無しさん
垢版 |
2009/09/19(土) 14:43:36
FizzBuzz
0200仕様書無しさん
垢版 |
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);
0201仕様書無しさん
垢版 |
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;
}
0202仕様書無しさん
垢版 |
2009/09/21(月) 11:41:01
>>192
プログラマの素養が関係ないような問題で素養を見ようとする意図って何なんだろうな。
結局、元のブログ主の?話題づくりに利用されているだけな気が知る
0204ぅゅ ◆e6.oHu1j.o
垢版 |
2009/09/22(火) 12:13:28
この問題って日本のものじゃないよね
海外っていうとレベル高そうにおもえるけど実はそうでもないんじゃ
0207仕様書無しさん
垢版 |
2009/09/23(水) 00:08:33
>>202
たとえ時間を充分にかけても正答にたどり着けないような人が
現実にはたくさん面接に来るんだよ
素養があるかどうかを見るんではなくて
素養がまるでない人をふるい落とすための簡易的な試験という位置づけ
0208仕様書無しさん
垢版 |
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
0210仕様書無しさん
垢版 |
2009/09/24(木) 16:41:34
スレタイ嫁、1嫁だけなら分かるけど、
1のリンク先まで必須となると、何か違うような気がする。

あと、何ていうか、「リンク先まで嫁」と、「2分以内」って、同じ部類のように思える。
自分の脳内ででっち上げた完璧さを、周囲の人に対して、期待している点において。
嫌味な言い方をすれば、配慮や謙虚さが足りないって言うか。
0211仕様書無しさん
垢版 |
2009/09/25(金) 03:28:04
それをたらたら書いてる時間でリンク先読むのは十分可能だよな?
元ネタは採用試験の話だ、くらいはFizzBuzzより簡単にわかるよな。
配慮や謙虚さが足りないって、むしろそっちじゃないのか。
嫌味な言い方だがな。
0212仕様書無しさん
垢版 |
2009/09/25(金) 15:11:26
情報の提示の仕方が悪い、
ボクちゃんは悪くない、おまえが悪い、おまえの教え方が悪い


というのは、典型的なゆとり脳の主張ですw
0213仕様書無しさん
垢版 |
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);}

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

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

というシビアな条件で最も間違いにくいコードに最高得点をあげたい。
0215仕様書無しさん
垢版 |
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
0216コード書き忘れた
垢版 |
2009/10/19(月) 22:30:41
++++++++++f

私の個人的な意見になるけど、
Fの一文字で、FizzBuzzを出力できるようにした方が、HQ9+っぽいと思うんだけどね。
0217仕様書無しさん
垢版 |
2009/10/19(月) 22:45:37
Cで書いたら緊張のあまりセミコロン忘れてあぼーんだなw
0218Go
垢版 |
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")
 }
}
0220仕様書無しさん
垢版 |
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
0221うゆ ◆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
0222仕様書無しさん
垢版 |
2010/04/21(水) 22:59:37
剰余(割り算の余り)を出すのに演算子の % 以外で計算できますか?
% を忘れると大変だぞ!
0223仕様書無しさん
垢版 |
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();
}
}
0225仕様書無しさん
垢版 |
2010/04/22(木) 02:12:40
>>221-223
うゆw問題からしてわかってねぇwwさすが天才www
"mes"w "kard"とおんなじwwメソッドwww
0226仕様書無しさん
垢版 |
2010/04/23(金) 00:56:20
>>225
223は動作は当たっているんじゃない。
% を使用しない方法ではこれでいいんじゃない?
0227仕様書無しさん
垢版 |
2010/04/23(金) 01:42:01
>>224
それってさ、漏れパスを使ったとか
正しい言い方忘れたが、「スクリプト使用のガキ」も含んででない?
0229仕様書無しさん
垢版 |
2010/04/23(金) 02:07:26
>>226
%を使う使わない以前に結果を他のコードと比べるくらいなぜできない?
数学のテストで「計算結果は違うけど式はあってますよね」とか言うクチか。
0230仕様書無しさん
垢版 |
2010/04/23(金) 02:59:12
%を忘れたwという変な条件を入れたとしても、
int reminder(int divisor, int dividend)
みたいな相当するメソッドを作るだろふつー。
直近の3と5の倍数を保持して商と比べるなんてせんでも。
void型のメソッドしか認めんwのなら別だけどさ。
0232仕様書無しさん
垢版 |
2010/04/23(金) 14:57:18
>>1
>1から100までの数をプリントするプログラムを書け。
>ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

とあるのに3や5をプリントアウトしたらただの間違いだろ。
問題をちゃんと読んでねぇアホじゃねーか。
0233231
垢版 |
2010/04/23(金) 15:26:12
>>232
あー そこか
0234仕様書無しさん
垢版 |
2010/04/24(土) 03:25:23
223に感動した。
コード読んでも、何やってるのかワカランかったが、
int3, i/3, int5, i/5 の値を出力してみたら、発想の奇抜さにたまげた。
0235234
垢版 |
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); }
0237仕様書無しさん
垢版 |
2010/04/24(土) 03:59:03
iが正の整数なら剰余%は除数xについてi-(int(i/x)*x)なんだから当たり前じゃん。
%を忘れてどうこうってのがどうかしてる。馬鹿?
0238仕様書無しさん
垢版 |
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 );
  }
 }
}
0240仕様書無しさん
垢版 |
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);
}
0241仕様書無しさん
垢版 |
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);
}
0242仕様書無しさん
垢版 |
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);
 }
}
0243仕様書無しさん
垢版 |
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でしょ
0244仕様書無しさん
垢版 |
2010/04/24(土) 22:55:00
>243
>15回に1回ごとに3と5の倍数が来ることを想定して配列に代入しているという
>理解でいいのかな。

全然違う。
関数compactが15で割った余りを(%演算子無しで)計算しているのがポイント。
下から4bitづつに区切って(まぁ上からでも同じだけど)、それを全部足したものと元の値では
15で割った余りが同じになることを利用している。
なぜそうなるかはちょっと頭をしぼって考えてみな
0245仕様書無しさん
垢版 |
2010/04/24(土) 23:07:38
10進数でmod 9が各桁の値の和に等しいってのと同じ話か。
16進数で考えてみようと思ったことが無かったぜ。
0247243
垢版 |
2010/04/25(日) 09:43:48
>>244
違っていたか。しぼって考えてみます。
0248(u_・y) ◆e6.oHu1j.o
垢版 |
2010/04/26(月) 04:48:47
>>225
おれが過去にかいたコードを描いたときにかんがえてた事を
予想すると、お前のその意味不明なレスもなんとなくわかるよ

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

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



まとめると:

おれは忙しいから
無駄なことに時間は使いたくない
0249仕様書無しさん
垢版 |
2010/04/26(月) 05:26:25
>>246
mod 9 = 0 の場合に限れば、「全桁の数字を足すと9の倍数になる数は9の倍数」
っていう中学生でも知ってる話だぜ。
0254仕様書無しさん
垢版 |
2010/05/04(火) 13:54:14
職歴なしニートにおいつくのはもう無理なんで。。
0255仕様書無しさん
垢版 |
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));
    }
}
0256仕様書無しさん
垢版 |
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

安直だなぁ、自分。
0257仕様書無しさん
垢版 |
2010/05/23(日) 04:13:08
>>256

その方法が一番だよ
シンプルイズベスト
業務のプログラムであんまり凝ったコード書かれると困る
0258仕様書無しさん
垢版 |
2010/05/26(水) 18:28:21
割り算や余剰を使うと計算コストが高い。
平凡にカウンタを使うほうが早い。
正しく解くだけじゃなくて高速性を考えないといけないのにわかってないアホ多すぎ
0259仕様書無しさん
垢版 |
2010/05/26(水) 20:40:51
確かにそうだけど
今の時代はI/O関係なければそんなに速度なんて変わらないから
ぱっと見でわかりやすいほうがいいだろ
いつの時代だよ
0260仕様書無しさん
垢版 |
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());
        }
    }
}
0261仕様書無しさん
垢版 |
2010/05/27(木) 13:32:51
>>258
その労力は、検索アルゴリズムの選択とか、枝刈りとか、効果出やすい所につぎこめよw
値を記憶するのは、どうしようもなく高速化最優先の場合か、せいぜい、三角関数のテーブル化あたりだね。
0262仕様書無しさん
垢版 |
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))
0263仕様書無しさん
垢版 |
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
0264仕様書無しさん
垢版 |
2010/05/31(月) 13:24:29
あれ?スペースが消えた
あ、全角じゃないとだめなのか
スレ汚ししてすいません
0265仕様書無しさん
垢版 |
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
0266仕様書無しさん
垢版 |
2010/05/31(月) 13:31:13
[1から100まで]ってのは仕様だからそれを満たさないと失格だよぅ
0267仕様書無しさん
垢版 |
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で書き直し。
0268仕様書無しさん
垢版 |
2010/06/01(火) 00:11:02
>>267
問題文を再確認して下さい。
時間がかかってもいいので、落ち着いて。

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz …
0269仕様書無しさん
垢版 |
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;
}
0270仕様書無しさん
垢版 |
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でやろうかな
0271仕様書無しさん
垢版 |
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

こうかな?
0273仕様書無しさん
垢版 |
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" }
}
0274仕様書無しさん
垢版 |
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" }
}
0275仕様書無しさん
垢版 |
2010/06/02(水) 03:42:32
274
2chの雑談程度で1分程度で書くとちょっと美しさにかけるな。
もう少し美しさを考えてみる
0277仕様書無しさん
垢版 |
2010/06/02(水) 03:58:46
>>276
何が間違ってる?1読んで正しい結果出てると思うんだけど。
0278仕様書無しさん
垢版 |
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" }
}
0279仕様書無しさん
垢版 |
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"
}
0280仕様書無しさん
垢版 |
2010/06/02(水) 04:11:15
>>279
ちょっと綺麗に手直ししてくれてサンクス
0281仕様書無しさん
垢版 |
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;
}
0282仕様書無しさん
垢版 |
2010/06/02(水) 15:49:55
print"
",($_%3?"":"Fizz").($_%5?"":"Buzz")||$_ for 1..100

最短記録48byteとかどういうことなの…
0283仕様書無しさん
垢版 |
2010/06/02(水) 16:33:50
while条件にi<100とか書いてる奴はクビ
range(1,100)とか書いてる奴もクビ
0284仕様書無しさん
垢版 |
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文字で五位
0286仕様書無しさん
垢版 |
2010/06/02(水) 17:48:41
>>284
それって、
1位 Bash, 2位 Perl(ver6), 3位 z80  (番外…GolfScript, HQ9F+)
のような気がする。

COBOLが、Brainf*ckやWhitespaceのようなネタ言語より、更に下…。
まあ、出力結果の414バイトよりは、小さくなるけど。
0287仕様書無しさん
垢版 |
2010/06/02(水) 17:56:24
…出力結果をlha圧縮したら、202バイトになった。
コマンド「lhasa a.lzh」と合わせても、213バイト。

つまり、出力結果>>>>>Esoteric(ネタ言語)>>>>>COBOL
0288仕様書無しさん
垢版 |
2010/06/02(水) 18:59:05
いや、COBOLってもともと冗長なの目的な言語だし。
なにいってんのおまいら。
0289仕様書無しさん
垢版 |
2010/06/02(水) 20:58:14
>>286
あくまでもここの仕様でのランキングだから、実質とか考える意味は無い
元々ここのランク対象外なHQ9F+を持ち出す意味も無い
COBOLが冗長なのも当たり前っちゃ当たり前
Bashっつっても実質ほぼGNU sedだから環境依存だろとか、言い出したらきりがない
0290仕様書無しさん
垢版 |
2010/06/02(水) 21:02:49
つーか言語の優劣ランキングと勘違いしてる奴が痛い
0291仕様書無しさん
垢版 |
2010/06/03(木) 00:30:49
>>288
「おまいら」っていうか、俺一人。(286=287)
この板、ID出ないんだね。

COBOLネタで釣れると思ったら、極めて常識的な意見ばかりで、がっかりだ。
0292仕様書無しさん
垢版 |
2010/06/03(木) 01:24:07
今さらCOBOLなんて知らない世代のほうが多いのかもよ
0293仕様書無しさん
垢版 |
2010/06/03(木) 02:05:48
「釣れると思ったら」は前置と後置で全く印象が変わるな
0294仕様書無しさん
垢版 |
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,
0296仕様書無しさん
垢版 |
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
0297仕様書無しさん
垢版 |
2010/06/04(金) 12:41:52
100が変動することも踏まえて定数にすべきだよな
0298仕様書無しさん
垢版 |
2010/06/04(金) 18:12:44
for s in fizzbuzz(itertools.count(-100000)):
  print s

とかに変えたりな
0299仕様書無しさん
垢版 |
2010/06/04(金) 19:06:16
100は所詮デフォルトパラメータだから埋め込んでも問題なくね
0300仕様書無しさん
垢版 |
2010/06/05(土) 00:08:07
一方、Perlはやっぱりキチガイだった
ttp://d.hatena.ne.jp/sugyan/20100321/1269174230
0301仕様書無しさん
垢版 |
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
0303仕様書無しさん
垢版 |
2010/06/06(日) 23:43:14
プログラマーなら「 変換プログラム」作れるよな?
0305仕様書無しさん
垢版 |
2010/06/07(月) 23:07:35
俺は超高度なセキュリティ対策用データコンバータープログラム作れるぜ。
これによってXSSという世界的脅威を打破できる。
0307仕様書無しさん
垢版 |
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)
}
}


0309仕様書無しさん
垢版 |
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関数の戻り値
 }
0310仕様書無しさん
垢版 |
2010/07/29(木) 15:52:42
ごめん、 fcint=3, bcint=5, fc=fcint-1, bc=bcint-1で、
ループ内が、fc=fcint, bc=bcintだね。
上のでも正常に動くけど。
0311307
垢版 |
2010/07/29(木) 19:09:51
>>309
わお。訂正していただけて、マジ参考になりますthx
つか俺は文法勉強しなおしだー・・・
0312仕様書無しさん
垢版 |
2010/09/19(日) 01:44:08
main(i){for(;i-101;puts(i++%5?"":"Buzz")){printf(i%3?i%5:"%d":0:"Fizz");}
0313仕様書無しさん
垢版 |
2010/09/20(月) 20:33:16
print 1
print 2
print Fizz
print 4
print Buzz
print Fizz
...
end.
0316仕様書無しさん
垢版 |
2010/09/25(土) 00:54:15
バグってるって話だろ。
main(i){for(;i-101;puts(i++%5?"":"Buzz")){printf(i%3?i%5?"%d":"Buzz":"Fizz",i);}}
0317仕様書無しさん
垢版 |
2010/09/25(土) 01:08:43
あ、いけね俺も失敗してら。結果は見た目正常風だとは思うが。
0318仕様書無しさん
垢版 |
2010/10/22(金) 13:04:46
FizzBuzzを極めてもう2年ほどたちます。
そろそろ採用してくれる会社を紹介してください。
0319仕様書無しさん
垢版 |
2010/10/23(土) 21:07:58
条件@
  もっとも安く仕上げよ
条件A
  運用コストは電源を入れてから1秒あたり1ドルかかる
  システムは以下の性能
    1. キー入力は1入力あたり1秒かかる
      shiftキー等の押下・離放もカウントする
    2. 文字入力は1文字あたり1ドルかかる
    3. プログラム入力後、コンパイル・実行開始までの秒数はカウントしない
    4. 実行は1行表示ごとに1秒かかる。表示した後同じ行に上書き表示
      するようなものは、上書きの度に1秒かかる
    5. 100行目(Buzz) 表示完了時までをコスト計算する
0320仕様書無しさん
垢版 |
2010/10/23(土) 23:07:51
Webプログラムじゃないのに{}を省略する理由はなんだろうか?
俺が昔読んだ本では{}は省略するなとあったけど
流行かな?
0321仕様書無しさん
垢版 |
2010/10/23(土) 23:43:24
>>319
条件が曖昧すぎて、パズルとして成り立ってないよ
プロ奴隷使えば安くなるんじゃねw

>>320
宗教論争
0322仕様書無しさん
垢版 |
2010/10/24(日) 10:36:38
たしかコンパイルしたら同じだから人間が読みやすいように
括弧でわかりやすく書くとあったけど。
そういう俺もめんどくさいとき括弧を省略するけど。
0323仕様書無しさん
垢版 |
2011/01/02(日) 07:37:02
Cのifとかの話なのかなぁ
LinuxカーネルやGnuみたいにメジャーなところでも、ifの{}は複文じゃなければ必ず
省略すること(ネストした時を除く)というルールを採用してる超大規模コードも
あるのよ
オフサイドルールで成り立っちゃってる言語もあるくらいだから、本当は言うほどの
危険は無いのかもしれん、と思うようになってからは、省略派に鞍替えしたというか、
元々省略してた(それでバグった記憶も無かった)ので省略派に戻ったというか
0325仕様書無しさん
垢版 |
2011/01/18(火) 02:22:56
↑「幅優先探索」とか、答え書かないでよ…。

でも、単純な幅優先なら、計算量爆発するよね。
25分〜3時間か。FizzBuzz位ならともかく、やってらんない。ギブアップだわ。寝る。
0326325
垢版 |
2011/01/18(火) 02:37:27
ゴメン、枝切りすれば、それなりに実用的な速度にはなりそうではあるね。(全部スペースとかでない限り。)
まぁ、なんか面倒臭そうなので、プライド捨てるわ。
実行時間無視の書き捨てコードとかじゃ、ダメ扱いされそうだし。
0327325
垢版 |
2011/01/18(火) 03:48:46
大学は情報系でないので、力技。(全てのセルに、最初のポイントからの位置を書き込み。)
予想通り、デバッグで時間取られる。
そもそも、やる気ないから、コードは汚いし。

バカバカしくなってきたから、中断する。
「まともなプログラマーなら〜」って言葉に、どうしても反応してしまう。
挑発に乗っちゃうクセを直さないとね。
0328325
垢版 |
2011/01/18(火) 03:54:46
何かイライラする。
さらっと数行で書けるものならともかく、意味の無いコード、1時間も書かされるとちょっと。
別に、芸のある出題でもないし。
スルーして、フリーソフトのメンテしとくんだったと後悔。
0329325
垢版 |
2011/01/18(火) 03:56:46
一応、Cで、セルに番号振るところまで書いた。
デバッグ含め、1時間半か。
ちょっと無能かもしれんが、馬鹿にするなら、馬鹿にしてくれ。
0330325
垢版 |
2011/01/18(火) 04:44:16
あ、出来た。
嫌々やるのやめて、コード整理したら、出来た。

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

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

まあ、>>324は、スルー力検定だったのだなw
0331仕様書無しさん
垢版 |
2011/01/18(火) 12:40:58
リアル厨房の時に、マイクロマウスでやったな。
8bitマイコンでモータやらセンサやらの面倒を見つつ、
迷路脱出させてた。
出口が隅じゃなく、内部に有ると泣いたw
0332325
垢版 |
2011/01/18(火) 15:33:00
>>331
あれって、総当り方式じゃん。左側か右側かの壁伝ってくんだっけ?


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

プログラムって、もっと、大らかに、何日もかけて、じっくり楽しむべきものなんだよね。
3時間とか、時間区切ってコーディングするのは、仕事でもない限り、邪道。
マイコンロボを試行錯誤して動かしたりとか、何日も考えてパズルの最適アルゴリズムを見出したりとか。
0333仕様書無しさん
垢版 |
2011/01/18(火) 20:42:37
>あれって、総当り方式じゃん。左側か右側かの壁伝ってくんだっけ?
だから、それだと出口が内部に有ると駄目だし、ループしてる柱みたいな
場所が有ると永久ループ。

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

汚部屋と言う名の迷路を掃除するロボット、ルンバも作れなさそうだな。
中国製ランダムウォークのパチ物に負けるぞ。
0335仕様書無しさん
垢版 |
2011/02/08(火) 23:42:25
>>325
幅優先探索の場合、計算時間より計算空間の方が先に破綻するんじゃ
ないかな。特にRAMの容量に限りの有る組込み制御の場合。
8bit時代は、オセロとか将棋も深さ優先探索してた。例外は森田和郎
ぐらいで、これもSSS*探索とαβ探索のハイブリッド。
0336仕様書無しさん
垢版 |
2011/03/07(月) 11:10:02.94
なつかしい話題発見。
全セル分のワークと若干のキューが確保できればいいんだから
そんなにメモリ圧迫するってほどでもないような。
といっても対象フィールドの広さにもよるだろうが、
例の出題程度の広さだったら破綻の心配はまずしなくていいでしょう。
各セルごとにゴール、スタート、障害物、未踏地、
既に歩いた地(「来た方向」の保持兼用)の区別がつけばいいので
ワークは各セルごとに1バイト(最低4ビット)あれば十分足りるし。
でも深さ優先探索しか知らなかった(書いたことがなかった)ので
試しに解いてみた時にはちょっと手こずってしまった。
ちなみに件の例題では深さ優先探索でも実用時間内に解けてしまう。
これって結構ワナかもな、と思った。
0337仕様書無しさん
垢版 |
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))
0338プログラマ志望の経済学部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;
}
0339仕様書無しさん
垢版 |
2011/06/11(土) 00:06:20.06
どうですかって言われても
まぁいいんじゃね
あえて言えば平凡すぎて面白みがなくてつまらん
0340仕様書無しさん
垢版 |
2011/06/11(土) 03:43:41.34
いい機会なんで?演算子を使ってみよう
0342仕様書無しさん
垢版 |
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部分を自分で書けばもっと速くなる
0343仕様書無しさん
垢版 |
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]);
}
}
0345仕様書無しさん
垢版 |
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);
}
0347仕様書無しさん
垢版 |
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'
0348仕様書無しさん
垢版 |
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
0349仕様書無しさん
垢版 |
2011/06/12(日) 02:55:39.33
FizzBuzzはできて当たり前、がんばるもんじゃないんだけどな。
「どうだっ」みたいな人が会社にいて困った。
0350仕様書無しさん
垢版 |
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はよくわからんのではずしたわ
0351仕様書無しさん
垢版 |
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__
0352仕様書無しさん
垢版 |
2011/06/13(月) 23:12:21.79
1.可変性
  このプログラムが実用になった場合、標準出力以外のものに出すよう変更の必要があると思われるが、簡単にできるよう考慮されているか
  倍数が3のみで5なしになったら?逆に両方残したまま7が増えたら?条件変わってもすぐに変更できるか
2.動作速度
  十分速いかあるいは速度アップの必要が生じた場合、どこをいじればよいか?具体的に内部でどういう動作が 行われているかわかっているか

 等をワシなら気にするな
最初黙っててできた後から上記のような質問してもすぐに対応したら、かなりできる奴だと思うわ
0353仕様書無しさん
垢版 |
2011/06/14(火) 01:46:04.12
いや、そもそも「かなりできる」奴か見るためのテストじゃないし。
がんばるもんじゃないったらスレ終わりじゃん。ここマ板だし。
こんな書き方もある、ってお遊びだよ?言わせんな恥ずかしいw
0354仕様書無しさん
垢版 |
2011/06/15(水) 00:34:09.43
♪フィズバズフィズバズよよいがよい
♪フィズバズフィズバズどどんがどん
♪三の倍数の時はフィズ
♪五の倍数の時はバズ
♪三と五の三と五の
♪公倍数ではフィズバズ印字
♪フィズバズ音頭でどどんがどん


















そこのズブズブの日本人のあなた
自然にメロディが浮かんで来たでしょ
0359仕様書無しさん
垢版 |
2011/07/07(木) 21:47:26.61
haskellとcで!!と思ったら、すでに書かれてた。。。Orz
haskellの内包表記で書けないか考えてみる
0360仕様書無しさん
垢版 |
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);
        }
    }
}
0361仕様書無しさん
垢版 |
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




0362仕様書無しさん
垢版 |
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
0363仕様書無しさん
垢版 |
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
0364仕様書無しさん
垢版 |
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();
        }
    }
}
0365362
垢版 |
2011/07/21(木) 23:31:27.81
>>363
そんなかんたんにいくのね・・・
0366仕様書無しさん
垢版 |
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))
0368仕様書無しさん
垢版 |
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
0369仕様書無しさん
垢版 |
2011/08/07(日) 04:20:51.13
見返したら色々間違えてる。なんかカオス。
俺赤面。こんな時間に眠い目こするからいけなかったんだ(言い訳

もう寝る。お休み
0374仕様書無しさん
垢版 |
2011/08/07(日) 20:10:30.23
>>368
関数の型をうろ覚えで済ますな、ぐぐれ

ループの範囲が1から100までなんだから、素直に1と100をコードに入れられるならそうした方が見やすい
つーかループ変数の初期化とか更新とかはforを使えばもっと見やすいし、見やすければバグりにくい
最近のC/C++のforならスコープも付くしな
0375仕様書無しさん
垢版 |
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;

}

0376仕様書無しさん
垢版 |
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;

}
0377仕様書無しさん
垢版 |
2011/08/25(木) 17:58:22.94
>>352

1 可変性

標準出力以外に出力する必要が生じたときは、disp()を修正する。
また、項目を追加する必要が生じたときは、変数の初期値を変える。

2 実行速度

可変性を重視すると、その分実行速度が落ちる。
0378仕様書無しさん
垢版 |
2011/08/25(木) 19:01:16.31
>>375-376まで行くと、可変性を無駄に重視しすぎだろ
要求が変更されたら、コードを書き換えて対応するのは当たり前なんだから、ほどほどに書き換えが
やりやすくなってりゃいいのよ
実行効率どころか可読性まで大きく落として、まだ見ぬ要求変更の可能性に幅広く対応するのは無駄
0379仕様書無しさん
垢版 |
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までね。
修正作業をすぐにやってくれ。締め切りは明日ね。
0380仕様書無しさん
垢版 |
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","  "};

よかった。
実行効率どころか可読性まで大きく犠牲にして、
まだ見ぬ要求変更の可能性に幅広く対応したコードを書いておいて…
0382仕様書無しさん
垢版 |
2011/08/26(金) 17:42:45.50
105(3,5,7で割れる)とかどうするんだろ、って思ったけどたぶんBuzzGizzなんだろうなぁ

直接"FizzBuzz"とか書かず、割れた数から出力すれば楽だと思ったんだが、そうするとFizzBuzzGizzになっちゃうんだよなぁ
Fizz,Buzz,…の数だけフラグ用意して、立てたり立てなかったりしつつ、その後3本以上になったら小さいほうを折って…って面倒だわ
0384仕様書無しさん
垢版 |
2011/08/26(金) 21:33:38.93
つーかその程度の変更なら、丸々書き換えても30分も要らんだろw
0385仕様書無しさん
垢版 |
2011/08/27(土) 00:02:00.57
面倒なだけで興味をひかないネタだな
こういうところにもその人のスキルって出るよな
よって>>379は低スキルのバカグラマー
0387仕様書無しさん
垢版 |
2011/08/27(土) 02:55:14.40
3で割り切れる時は3倍、5で割り切れる時は5倍にして表示してね、という簡単な変更要求が来た途端、
可変性が高いつもりでただ重いだけの無駄コードと化すしな
0389仕様書無しさん
垢版 |
2011/08/27(土) 15:09:54.05
この程度の規模のコードで、コードの再利用を考慮しすぎるのはムダ。
仕様変更に伴って書き直した方が早い。

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

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

でも実際問題としては>>389に完全同意
0394仕様書無しさん
垢版 |
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.
0396仕様書無しさん
垢版 |
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
0398仕様書無しさん
垢版 |
2012/02/14(火) 21:31:53.79
>>397
10個ごとに改行入れるってことだろ?見やすくするために
0401仕様書無しさん
垢版 |
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" など)で。
0403仕様書無しさん
垢版 |
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"
0404仕様書無しさん
垢版 |
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);
0405仕様書無しさん
垢版 |
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
0406仕様書無しさん
垢版 |
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"
0407仕様書無しさん
垢版 |
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';

とかネタで書いてたら、こういう発想のコードに実際関わる羽目に遭った時の記憶が蘇って嫌になった
0408仕様書無しさん
垢版 |
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';

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

もう二度と逝かない。
0411仕様書無しさん
垢版 |
2012/10/09(火) 01:14:03.88
平気で0〜99とか1〜99とかになってるコードの多さに戦慄するスレ
0412仕様書無しさん
垢版 |
2012/10/09(火) 21:21:50.29
Duff's Deviceはふつくしいけど見たくない。
0413仕様書無しさん
垢版 |
2012/10/10(水) 00:57:25.52
>>410
なんか理由あってそうやってんのかな?それとも池沼が作ったのか。
0414仕様書無しさん
垢版 |
2012/10/10(水) 01:25:54.46
世界には池沼が書いたコードが溢れてる
マジで溢れかえってる
0415仕様書無しさん
垢版 |
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__:;
}

}
0416仕様書無しさん
垢版 |
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;
    }
  }
}
0417仕様書無しさん
垢版 |
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
0418仕様書無しさん
垢版 |
2013/09/22(日) 14:22:28.53
twitter.com/paiza_official
paizaの公式アカウントの背景に
fizzbuzz問題を解け。ただし、剰余は使わないこと
という画像があったんだが、剰余を使わないで解くことってできるの?
0419仕様書無しさん
垢版 |
2013/09/22(日) 14:38:34.16
剰余演算子を使わない、ならこのスレにもいくつかある。
0421仕様書無しさん
垢版 |
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");
  }
 }
}
0422仕様書無しさん
垢版 |
2013/09/22(日) 20:22:11.46
除算命令を持たない8bitマイコンなんかだったら有りだな。
0423仕様書無しさん
垢版 |
2013/09/22(日) 21:24:44.09
実際に >>422 であるならともかく、
倍数が関わる問題を、剰余を使わずに解決しようyとするのは
基本的にアホではないのか
0425仕様書無しさん
垢版 |
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>");
}
0430仕様書無しさん
垢版 |
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");
}
0431仕様書無しさん
垢版 |
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;
  }
 }
}
0432仕様書無しさん
垢版 |
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);
0433仕様書無しさん
垢版 |
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]
0434仕様書無しさん
垢版 |
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
0435仕様書無しさん
垢版 |
2013/10/17(木) 02:27:53.25
>>434訂正

100.times do|i|

だったorz
0436仕様書無しさん
垢版 |
2013/10/17(木) 03:19:11.84
pを全部aにでも訂正
0437仕様書無しさん
垢版 |
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
0438仕様書無しさん
垢版 |
2013/10/18(金) 03:30:13.39
モジュロ演算子使う奴=機能豊富な時代の現代っ子
割って切り上げた値と割った値を比較する奴=浮動小数点除算が早い時代の現代っ子
3つカウンタを使う奴=ベーシックなやり方にこだわるオッサン
文字列をメソッドで比較する奴=オブジェクト至高の現代っ子
再帰関数にする奴=スタックは無限にあると思ってる現代っ子
"Fizz"と"Buzz"両方出すときは1行?2行?と聞く奴=ナイス質問だが今回は気にすんな。
表示文字列と改行コードを別に出力する奴=サンプルだから気にすんなって。
出力を区切らない奴=それでもいいんだけどちょっとは気にしろよ。
asmキーワード使うやつ=素直にニーモニックだけ書けよ。
配列に100個値を入れておいて無判定で順番に出す奴=速度命の変態乙。
"Fizz"/"Buzz"と"FizzBuzz"を別に判定する奴=新人乙。
IDENTIFICATION DIVISIONから書く奴:先輩乙。
73桁目からコメントの奴:大先輩オッスオッス。
0439仕様書無しさん
垢版 |
2013/10/18(金) 13:13:30.65
Squeak Smalltalk
(1 to: 15) collect: [:n | ((#('' '' Fizz) atWrap: n), (#('' '' '' '' Buzz) atWrap: n)) ifEmpty: [n]]
0440仕様書無しさん
垢版 |
2013/10/19(土) 14:23:53.28
あー、勢いで書いたら間違ってたわ。
割って切り上げた値と割った値を比較
じゃなくて
割って切り捨てた値と割った値を比較
だわ。
逝ってくるorz
0442仕様書無しさん
垢版 |
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')
0443仕様書無しさん
垢版 |
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)")
}
}
}
0444仕様書無しさん
垢版 |
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
0445仕様書無しさん
垢版 |
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
0446仕様書無しさん
垢版 |
2015/03/11(水) 23:29:00.62
<?php
echo '1 2 Fizz 4 Buzz 6 7 8 Fizz Buzz 11 12 13 14 FizzBuzz ・・・
0447仕様書無しさん
垢版 |
2015/03/27(金) 16:55:02.57
紙に直書きで人に見られながらだと
FizzBuzzが限界です
0448仕様書無しさん
垢版 |
2015/07/30(木) 17:34:29.19
フーターズコンテストジャパンで二位だったSerinaが、
黒人に輪姦されてる動画が流出したようですね。
鮮明だし最後は狂ったように泣きながらイキまくってる。
ちんこたった。
http://subject24.xyz/black025.jpg
0449仕様書無しさん
垢版 |
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;
}
0450仕様書無しさん
垢版 |
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
0451仕様書無しさん
垢版 |
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.
0452仕様書無しさん
垢版 |
2017/06/12(月) 06:40:48.51
間違えているよ
0453仕様書無しさん
垢版 |
2017/07/05(水) 22:57:01.46
FizzBuzzくらいググりゃコードくらい出てくるしコピペ最有力コードじゃねえか
0454仕様書無しさん
垢版 |
2017/12/29(金) 20:02:55.94
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

GUXZSIC6RT
0455仕様書無しさん
垢版 |
2018/05/22(火) 14:54:00.47
とても簡単な自宅で稼げる方法
参考までに書いておきます
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

8GEXJ
0456仕様書無しさん
垢版 |
2020/03/28(土) 00:26:41.22
ちがう
0457仕様書無しさん
垢版 |
2020/05/07(木) 02:55:04.74
Googleのエンジニア様らしいけどもFizzBuzz解けなかった
h ttps://twitter.com/d0iasm/status/1257645577321320450
h ttps://twitter.com/hikalium/status/1257641052145455104
https://twitter.com/5chan_nel (5ch newer account)
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況