[表示 : 全て 最新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

言語自由

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

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

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

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


















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


355 名前:uy ◆yyC0rYWEq2 mailto:sage [2011/06/16(木) 22:02:56.19 ]
メタでかけよ

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


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


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

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


360 名前:仕様書無しさん mailto:sage [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 名前:仕様書無しさん mailto:sage [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 名前:仕様書無しさん mailto:sage [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 名前:仕様書無しさん mailto:sage [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 名前:仕様書無しさん mailto:sage [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();
        }
    }
}

365 名前:362 mailto:sage [2011/07/21(木) 23:31:27.81 ]
>>363
そんなかんたんにいくのね・・・

366 名前:仕様書無しさん mailto:sage [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 名前:仕様書無しさん 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