[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 04/11 16:12 / Filesize : 123 KB / Number-of Response : 402
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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

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

言語自由

367 名前:仕様書無しさん mailto:sage [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 名前:仕様書無しさん mailto:sage [2011/08/07(日) 07:29:01.96 ]
本物のマなら、寝ずにデバッグする。

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

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

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

374 名前:仕様書無しさん mailto:sage [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 名前:仕様書無しさん mailto:sage [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 名前:仕様書無しさん mailto:sage [2011/08/26(金) 17:24:33.68 ]
そんなピンポイントな仕変出す客おるかいw

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

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

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

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

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



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

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

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

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

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

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

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

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

391 名前:仕様書無しさん mailto:sage [2011/08/27(土) 22:08:29.33 ]
unsignedも付けろ

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

393 名前:仕様書無しさん mailto:sage [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 名前:仕様書無しさん mailto:sage [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 名前:仕様書無しさん mailto:sage [2012/02/14(火) 20:47:20.57 ]
>If i Mod 10 = 0 Then
???

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

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

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

401 名前:仕様書無しさん mailto:sage [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" など)で。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<123KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef