プログラマーなら「FizzBuzz問題」解けるよな?at PROG
プログラマーなら「FizzBuzz問題」解けるよな? - 暇つぶし2ch200:仕様書無しさん
09/09/20 22:37:29
#pythonのリストコンプリヘンションで遊んでみた

def nvl(x,y):
  if x: return x;
  return y;

fizz = (['','','fizz']*100)[0:100];
buzz = (['','','','','buzz']*100)[0:100];
num = map(lambda x:str(x),range(1,101));

print map(nvl,map(lambda x,y:x+y,fizz,buzz),num);

201:仕様書無しさん
09/09/20 23:13:31
ちょっとだけ、悪ノリ。(C言語)

#include <stdio.h>
#include <memory.h>
int main(void)
{
int i;
char buf[8];
printf("<html><head><title>クソスレ</title></head><body><dl>");
for (i=1;i<=1001;i++)
{
  char* s1, *s2, *s3, *s4;
  sprintf(buf,"%d",i);
  s2 = "blue";
  s3 = " ";
  s4 = "投稿日: 2009/09/20(日) 23:59:59 ID:FizzBuzz";
  if (i%1001==0) { s1 = "このスレッドは1000を超え(ry"; s2="green"; s4="投稿日: Over 1000 Thread"; }
  else if (i%15==0) { s1 = "fizzbuzz"; s3="[fizzbuzz]"; }
  else if (i%3==0) { s1 = "fizz"; s3="[fizz]"; }
  else if (i%5==0) { s1 = "buzz"; s3="[buzz]"; }
  else { s1 = buf; s2 = "green"; s3 = " "; }
  printf("<dt>%d 名前:<font color=\"%s\"><b>仕様書無しさん</b>%s</font> %s</dt> ",i,s2,s3,s4);
  printf("<dd style=\"padding:1em 0em\";>%s</dd>",s1);
}
printf("</dl></body></html>");
return 0;
}

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

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


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

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

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

207:仕様書無しさん
09/09/23 00:08:33
>>202
たとえ時間を充分にかけても正答にたどり着けないような人が
現実にはたくさん面接に来るんだよ
素養があるかどうかを見るんではなくて
素養がまるでない人をふるい落とすための簡易的な試験という位置づけ

208:仕様書無しさん
09/09/23 00:23:36
Fortran90

program hoge
implicit none
integer :: i
do i=1,200
if (mod(i,15).eq.0) then
print *,'Fizz Buzz'
else if (mod(i,5).eq.0) then
print *,'Buzz'
else if (mod(i,3).eq.0) then
print *,'Fizz'
else
print *,i
end if
end do
end program hoge

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

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

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

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

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


というのは、典型的なゆとり脳の主張ですw

213:仕様書無しさん
09/10/19 21:26:19
出来るだけ短く
ここで一応動いたよ。→URLリンク(codepad.org)

#include <stdio.h>
#define p printf
main(){int i;for(i=1;i<=100;i++)if(!p("%s",p("%s%s",i%3?0:"Fizz",i%5?0:"Buzz")?"\n":0))p("%d\n",i);}



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

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

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

215:仕様書無しさん
09/10/19 22:28:45
その条件だと、HQ9F+で書くのが、最強か?
URLリンク(cfs.maxn.jp)

※元になったのはHQ9+という、ネタ言語。
  Hと入力すれば、Hello worldを出力してくれる。
  URLリンク(ja.wikipedia.org)

216:コード書き忘れた
09/10/19 22:30:41
++++++++++f

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

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

218:Go
09/11/17 17:06:00
package main

import "fmt"

func main() {
 for i:=1;i<101;i++ {
  s:="";
  if i%3==0 { s+="Fizz" }
  if i%5==0 { s+="Buzz" }
  if s=="" { s=fmt.Sprintf("%d",i) }
  fmt.Printf(s+"¥n")
 }
}


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

220:仕様書無しさん
09/11/18 05:13:33
for i in range(100):
if (i % 3) == 0 and (i % 5) == 0:
print u'FizzBuzz'
elif (i % 3) == 0:
print u'Fizz'
elif (i % 5) == 0:
print u'Buzz'
else:
print i


221:うゆ ◆e6.oHu1j.o
09/12/03 05:10:19

100.times do |n|
 str = String.new
 str = n%15==0?:fizzbuzz:n%5==0?:fizz:n%3==0?:buzz:""
 print "%03d:%s\n" % [n,str]
end

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


223:仕様書無しさん
10/04/21 23:31:11
剰余 % を忘れたときに使える方法だと思う。
この問題で肝心なところは % と 「かつ」の && だな。あー恥ずかしい

class TestFizBuz {
public void mes() {
int int3 = 0;
int int5 = 0;
for (int i = 1; i <= 100; i++) {

if (int3 < i/3 && int5 < i/5) {
System.out.println("FizzBuzz: " + i);
int3 = i/3;
int5 = i/5;
} else if (int3 < i/3) {
System.out.println("Fizz: " + i);
int3 = i/3;
} else if (int5 < i/5) {
System.out.println("Buzz: " + i);
int5 = i/5;
} else {
System.out.println(i);
}

}
}
public static void main(String[] args) {
TestFizBuz tfb = new TestFizBuz();
tfb.mes();
}
}

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

【調査】13歳までにハッキングをした経験した34%―米英の若者の実態調査(10/04/15)
スレリンク(pcnews板)

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

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

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

228:仕様書無しさん
10/04/23 01:44:07
Script kiddie ?

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


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

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


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

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

233:231
10/04/23 15:26:12
>>232
あー そこか


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

235:234
10/04/24 03:33:23
233の計算テクはそのままで、変数int3,int5を取り去ったコード。

if ((i-1)/3!=i/3 && (i-1)/5!=i/5)
    { printf("FizzBuzz\n"); }
else if ((i-1)/3!=i/3)
    { printf("Fizz\n"); }
else if ((i-1)/5!=i/5)
    { printf("Buzz\n"); }
else
    { printf("%d\n",i); }


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

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

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

238:仕様書無しさん
10/04/24 10:03:06
%を忘れた人のため:その2

#include <stdio.h>
int rem3is0[16]={1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1};
int rem5is0[16]={1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1};

int compact( unsigned int n ) {
 n = ( n & 0x0f0f0f0f ) + ((n>>4)&0x0f0f0f0f);
 n = ( n & 0x00ff00ff ) + ((n>>8)&0x00ff00ff);
 n = ( n & 0x0000ffff ) + ((n>>16)&0x0000ffff);
 return ( n > 15 )? compact(n): n;
}

#define N 100
int main( ) {
 unsigned int i;
 for( i = 1; i <= N; ++i ) {
  int j = compact(i);
  if( rem3is0[j] & rem5is0[j] ) {
   printf( "FizzBuzz " );
  }
  else if( rem3is0[j] ) {
   printf( "Fizz " );
  }
  else if( rem5is0[j] ) {
   printf( "Buzz " );
  }
  else {
   printf( "%i ", i );
  }
 }
}

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

240:仕様書無しさん
10/04/24 13:09:56
>238の応用
その3 ifも忘れた人のため

#include <stdio.h>

char *fz[16]={"","%u ","%u ","Fizz ","%u ","Buzz ","Fizz ",
    "%u ","%u ","Fizz ","Buzz ","%u ","Fizz ","%u ","%u ","FizzBuzz "};
 
int compact( unsigned int n ) {
 n = ( n & 0x0f0f0f0f ) + ((n>>4)&0x0f0f0f0f);
 n = ( n & 0x00ff00ff ) + ((n>>8)&0x00ff00ff);
 n = ( n & 0x0000ffff ) + ((n>>16)&0x0000ffff);
 return ( n > 15 )? compact(n): n;
}

#define N 100
int main( ) {
 unsigned int i;
 for( i = 1; i <= N; ++i )printf( fz[compact(i)],i);
}


241:仕様書無しさん
10/04/24 13:23:30
>>240
いや、それだとこれと変わらなくて興が削がれるからだめだろ。
#include <stdio.h>
char *fz[16]={"","%u ","%u ","Fizz ","%u ","Buzz ","Fizz ",
"%u ","%u ","Fizz ","Buzz ","%u ","Fizz ","%u ","%u ","FizzBuzz "};
int main( ) {
 unsigned int i;
 for( i = 1; i <= 100; ++i )printf( fz[i-i/15*15],i);
}


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

#include <stdio.h>
#include <stdint.h>

void fb(uint32_t x){ printf( "FizzBuzz " ); }
void f(uint32_t x){ printf( "Fizz " ); }
void b(uint32_t x){ printf( "Buzz " ); }
void n(uint32_t x){ printf( "%lu ", (unsigned long)x ); }

void (*fn[4])(uint32_t) = { n, b, f, fb };
const uint32_t FN = 0xc1241843;

unsigned int compact( uint32_t n ) {
 n = ( n & 0x0f0f0f0f ) + ((n>>4)&0x0f0f0f0f);
 n = ( n & 0x00ff00ff ) + ((n>>8)&0x00ff00ff);
 n = ( n & 0x000000ff ) + ((n>>16)&0x000000ff);
 n = ( n & 0x0000000f ) + ((n>>4)&0x0000000f);
 n = ( n & 0x0000000f ) + ((n>>4)&0x0000000f);
 return n;
}

#define N 100
int main( ) {
 for( uint32_t i = 1; i <= N; ++i ) {
  (*fn[(FN>>compact(i)*2)&3])(i);
 }
}

243:仕様書無しさん
10/04/24 21:33:16
これはすごいね。
15回に1回ごとに3と5の倍数が来ることを想定して配列に代入しているという
理解でいいのかな。
class FizzBuzz {
static final String strFizBuz[] = {"","","Fizz ","","Buzz ","Fizz ",
"","","Fizz ","Buzz ","","Fizz ","","","FizzBuzz "};
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 100; i++) {
if (strFizBuz[count].equals("")) {
System.out.println(i);
count++;
} else if (strFizBuz[count].equals("Fizz ") || strFizBuz[count].equals("Buzz ")) {
System.out.println(strFizBuz[count]);
count++;
} else if (strFizBuz[count].equals("FizzBuzz ")) {
System.out.println(strFizBuz[count]);
count = 0;
}
}
}
}

簡単にするとこれでもOKでしょ

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

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

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

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

247:243
10/04/25 09:43:48
>>244
違っていたか。しぼって考えてみます。

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

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

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



まとめると:

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

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

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

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

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

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

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

255:仕様書無しさん
10/05/07 19:45:27
using System;
public class FizzBuzzFormat : IFormatProvider, ICustomFormatter
{
    private static char[] Z = new char[] {'Z'};
    public object GetFormat(Type formatType)
    {
        return formatType == typeof(ICustomFormatter) ? this : null;
    }
    public string Format(string format, object arg, IFormatProvider provider)
    {
        if (format == null) return String.Format("{0}", arg);
        if (format.StartsWith("Z")) {
            int n = (int) arg;
            bool m3 = n % 3 == 0, m5 = n % 5 == 0;
            return m3 ? (m5 ? "FizzBuzz" : "Fizz")
                : (m5 ? "Buzz" : n.ToString());
        }
        if (arg is IFormattable)
            return ((IFormattable)arg).ToString(format, provider);
        return arg.ToString();
    }
}
public class FizzBuzz
{
    static void Main()
    {
        var fbf = new FizzBuzzFormat();
        for (var i = 1; i <= 100; i++)
            Console.WriteLine(String.Format(fbf, "{0:Z}", i));
    }
}

256:仕様書無しさん
10/05/23 02:47:37
for i=1,100 do
s =""
if( i % 3 == 0 )then s="Fizz" end
if( i % 5 == 0 )then s=s.."Buzz" end
if( s == "" )then s=i end
print( s )
end

安直だなぁ、自分。

257:仕様書無しさん
10/05/23 04:13:08
>>256

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

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

259:仕様書無しさん
10/05/26 20:40:51
確かにそうだけど
今の時代はI/O関係なければそんなに速度なんて変わらないから
ぱっと見でわかりやすいほうがいいだろ
いつの時代だよ

260:仕様書無しさん
10/05/26 22:45:50
using System;
class FizzBuzz
{
    static void Main()
    {
        var a = new[] {
            new { Multiple = 3, Indication = "Fizz" },
            new { Multiple = 5, Indication = "Buzz" }
        };
        int[] c = new int[a.Length];
        for (int i = 1; i <= 100; i++) {
            bool fb = false;
            for (int j = 0; j < a.Length; j++) {
                if (++c[j] == a[j].Multiple) {
                    Console.Write(a[j].Indication);
                    c[j] = 0;
                    fb = true;
                }
            }
            Console.WriteLine(fb ? "" : i.ToString());
        }
    }
}

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

262:仕様書無しさん
10/05/28 02:01:12
Python、短絡評価とジェネレータ内包表記で。

def fizz(x):
 return x % 3 == 0 and 'Fizz' or ''

def buzz(x):
 return x % 5 == 0 and 'Buzz' or ''

def fizzbuzz(x):
 return ''.join((fizz(x), buzz(x))) or str(x)

print '\n'.join(fizzbuzz(x) for x in xrange(1, 101))

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

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

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

265:仕様書無しさん
10/05/31 13:29:59
>>263-264
こう書きたかったんだろうけど、iの値が常に表示されてしまう

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

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


267:仕様書無しさん
10/05/31 13:38:35
すんません
for i in range(1,100):
  if i%3==0:
    print("Fizz",end='')
  if i%5==0:
    print("Buzz",end='')
  print('\n')
  i=i+1

Python3で書き直し。

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

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

269:仕様書無しさん
10/06/01 00:26:53
#include <stdio.h>
#include <stdlib.h>

int fizzbuzz(int pos)
{
 if (pos%15==0) { printf("振り出しに戻る\n"); return 1; }
 else if (pos%5==0) { printf("コンビニまでパシり\n"); }
 else if (pos%3==0) { printf("服を1枚脱ぐ\n"); }
 else { printf("%d\n",pos); }
 return pos;
}

int main(void)
{
 int pos = 1, saikoro;
 randomize();
 while (pos<100)
 {
   saikoro = rand() % 6 + 1;
   printf("現在位置%d-> %d が出ました\n",pos,saikoro);
   pos = fizzbuzz(pos+saikoro);
 }
 printf("ゴール");
 return 0;
}

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

次はLuaでやろうかな

271:仕様書無しさん
10/06/01 23:42:58
ミス

for i in range(1,100):
  print(i,end=' ')
  if i%3==0:
    print("Fizz",end='')
  if i%5==0:
    print("Buzz",end='')
  print(' ')
  i=i+1

こうかな?

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

273:仕様書無しさん
10/06/02 03:23:50
perl言語で
$c = 0;
while ($c < 100){
$c++;
print $c . "\n";
if (($c % 3) == 0){print " fizz\n" }
if (($c % 5) == 0){print " bizz\n" }
}


274:仕様書無しさん
10/06/02 03:36:33
アウトプットを修正

while ($c < 100){
$f = 0;
$c++;
unless (($c % 15) == 0 ){
if (($c % 3 ) == 0 ) {print "fizz\n"; $f = 1 }
if (($c % 5 ) == 0 ) {print "buzz\n"; $f = 1 }
}else { print "fizzbuzz\n"; $f = 1 }
if ($f == 0 ) { print $c . "\n" }
}


275:仕様書無しさん
10/06/02 03:42:32
274
2chの雑談程度で1分程度で書くとちょっと美しさにかけるな。
もう少し美しさを考えてみる

276:仕様書無しさん
10/06/02 03:51:17
てーか>1読んでから書けよ馬鹿

277:仕様書無しさん
10/06/02 03:58:46
>>276
何が間違ってる?1読んで正しい結果出てると思うんだけど。

278:仕様書無しさん
10/06/02 04:01:21
大文字の事?

while ($c < 100){
$f = 0;
$c++;
unless (($c % 15) == 0 ){
if (($c % 3 ) == 0 ) {print "Fizz\n"; $f = 1 }
if (($c % 5 ) == 0 ) {print "Buzz\n"; $f = 1 }
}else { print "FizzBuzz\n"; $f = 1 }
if ($f == 0 ) { print $c . "\n" }
}


279:仕様書無しさん
10/06/02 04:05:52

while ($c < 100){
$f = 0;
$c++;
if (($c % 3 ) == 0 ) {print "Fizz"; $f = 1 }
if (($c % 5 ) == 0 ) {print "Buzz"; $f = 1 }
if ($f == 0 ) { print $c }
print "¥n"
}


280:仕様書無しさん
10/06/02 04:11:15
>>279
ちょっと綺麗に手直ししてくれてサンクス

281:仕様書無しさん
10/06/02 05:21:20
#include<stdio.h>
int main(void){
int i;
for(i=1;i<=100;i++){
if(i%15 == 0){
printf("FizzBuzz ");
}

else if(i%3 == 0){
printf("Fizz ");
}
else if(i%5 == 0){
printf("Buzz ");
}

else{
printf("%d ",i);
}
}
return 0;
}

282:仕様書無しさん
10/06/02 15:49:55
print"
",($_%3?"":"Fizz").($_%5?"":"Buzz")||$_ for 1..100

最短記録48byteとかどういうことなの…

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

284:仕様書無しさん
10/06/02 16:53:53
URLリンク(golf.shinh.org)
ここだな

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

285:仕様書無しさん
10/06/02 17:15:41
>>282
print+(Fizz)[$_%3].(Buzz)[$_%5]||$_,$/for 1..100

286:仕様書無しさん
10/06/02 17:48:41
>>284
それって、
1位 Bash, 2位 Perl(ver6), 3位 z80  (番外…GolfScript, HQ9F+)
のような気がする。

COBOLが、Brainf*ckやWhitespaceのようなネタ言語より、更に下…。
まあ、出力結果の414バイトよりは、小さくなるけど。

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

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

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

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

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

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

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

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

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

294:仕様書無しさん
10/06/03 20:45:17
ご迷惑おかけします、>>271です。
これでどうですか、ダメですか?
def fizzbuzz():
  i=1
  text=""
  while i<=100:
    if i%3==0:
     text += "Fizz"
    if i%5==0:
     text += "Buzz"
    if text=="":
      yield i
    else:
      yield text
    i+=1
    text=""

for a in fizzbuzz():
  print a,


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

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

def fizzbuzz(nums=range(1,101)):
 for i in nums:
  s = ""
  if i % 3 == 0:
   s += "Fizz"
  if i % 5 == 0:
   s += "Buzz"
  yield i if s == "" else s

for s in fizzbuzz():
 print s

こんな感じにするかなぁ俺だと。さらに悪乗りするなら、

def general_fizzbuzz(nums, *fv):
 for i in nums:
  s = ""
  for f, v in fv:
   if f(i):
    s += v
  yield str(i) if s == "" else s

def fizzbuzz(nums=range(1,101)):
 return general_fizzbuzz(nums,
  (lambda i: i % 3 == 0, "Fizz"),
  (lambda i: i % 5 == 0, "Buzz"),
  )

for s in fizzbuzz():
 print s

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

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

とかに変えたりな

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

300:仕様書無しさん
10/06/05 00:08:07
一方、Perlはやっぱりキチガイだった
URLリンク(d.hatena.ne.jp)

301:仕様書無しさん
10/06/06 01:21:02
for i in range(1,101):

script = i

if (i%3==0)and(i%5==0):
script = "FizzBuzz"
elif i%3==0:
script = "Fizz"
elif i%5==0:
script = "Buzz"

print script

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

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

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

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

306:仕様書無しさん
10/06/25 15:51:42
dc

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

307:仕様書無しさん
10/07/28 21:13:41
あー、Cって文字列直接入れられなかったんだorz。ずっとテスターでorz状態だ

c=1;
fcint=3;
bcint=5;
max = 100;
fc=fcint;
bc=bcint;
for (c=1; c>max; c++,fc--,bc--){
f = "";
b = "";
if (fc==1){
f = "fuzz";
fc = fcint;
}
if (bc==1){
b = "buzz";
bc = bcint;
}
if (f=="" && b==""){
printf(c)
}
else{
printf(f + b)
}
}




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

309:仕様書無しさん
10/07/29 15:47:08
#include <stdio.h> //printf使うには、インクルード文が必要
#include <string.h>
int main(void) { //main関数が必要
 int c=1; //型の宣言が必要
 int fcint=3 - 1; //同上 + 下のほうでfc==0に書き換えた分、1をマイナス (※最初に表示する数が1だから)
 int bcint=5 - 1; //同上 + 下のほうでbc==0に書き換えた分、1をマイナス
 int max = 100; //同上
 int fc=fcint; //同上
 int bc=bcint; //同上
 for (c=1; c<=max; c++,fc--,bc--){ // c<=maxにしないとループ回らないよ!!
   char* f = ""; //型の宣言が必要(C++ならstring型を使うこと)
   char* b = "";
   if (fc==0){ //3つおきじゃなくて2つおきになってたよ!!
     f = "fizz"; //fuzzじゃなくってfizz(笑)
     fc = fcint + 1;
     }
   if (bc==0){ //5つおきじゃなくて4つおきになってたよ!!
     b = "buzz";
     bc = bcint + 1;
     }
   if (strcmp(f,"")==0 && strcmp(b,"")==0){ //ポインタと空文字列を比較しないこと(C++なら元のままでOK)
     printf("%d",c); //数は直接printfできない
     }
   else{
     printf(f); printf(b); //文字列型ではないので、足し算しないこと(C++なら元のままでOK)
     }
   printf("\n"); //できれば、改行すること
   }
 return 0; //main関数の戻り値
 }

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

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

312:仕様書無しさん
10/09/19 01:44:08
main(i){for(;i-101;puts(i++%5?"":"Buzz")){printf(i%3?i%5:"%d":0:"Fizz");}

313:仕様書無しさん
10/09/20 20:33:16
print 1
print 2
print Fizz
print 4
print Buzz
print Fizz
...
end.

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

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

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

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

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

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


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

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

>>320
宗教論争

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

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

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

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

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

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

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

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

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

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

330:325
11/01/18 04:44:16
あ、出来た。
嫌々やるのやめて、コード整理したら、出来た。

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

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

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

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

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


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

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

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

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

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

334:仕様書無しさん
11/02/06 02:07:41
>>324
ためしにやってみた
スレリンク(tech板:294番)

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

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


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

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

337:仕様書無しさん
11/03/18 10:49:36.47
空気読まずにCLOSでfizzbuzz,

(defgeneric fbzz (%3 %5 n)
(:method (%3 %5 n) (print n))
(:method ((%3 fixnum) %5 n) (print 'fizz))
(:method (%3 (%5 fixnum) n) (print 'buzz))
(:method ((%3 fixnum) (%5 fixnum) n) (print 'fizzbuzz)))

(defun fizz-buzz (n) (fbzz (/ n 3) (/ n 5) n))

(loop for i from 1 to 100 do (fizz-buzz i))

338:プログラマ志望の経済学部4年生
11/06/10 16:54:07.54
プログラミング始めて3週間です、どうですか?
#include <stdio.h>

int main(void)
{
int a;

for (a = 1; a <= 100; a++)
{
if (a % 3 == 0 && a % 5 == 0)
printf ("FizzBuzz\n");

else if (a % 3 == 0)
printf("Fizz\n");

else if (a % 5 == 0)
printf("Buzz\n");

else
printf("%d\n", a);
}

return 0;
}


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

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

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

342:仕様書無しさん
11/06/11 11:19:06.80
こうかな
int main(void){
char *s[4] = { "  ","Fizz","Buzz","FizzBuzz"};
int i;
for (i=1;1<=100;i++){
sprintf(s[0],"%d",i)
puts(s[(i%5==0)<<1+(i%3==0)]);
}
}
確認してないからわからんがかなり速の筈
sprintf部分を自分で書けばもっと速くなる

343:仕様書無しさん
11/06/11 11:31:36.95
こうすればもっと早いな
int main(void){
char *s[4] = { "  ","Fizz","Buzz","FizzBuzz"};
int i, j;
for (i=1;1<=100;i++){
j=(i%5==0)<<1+(i%3==0);
if(j==0)
sprintf(s[0],"%d",i);
puts(s[j]);
}
}

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

345:仕様書無しさん
11/06/11 18:10:12.16
1<=100はともかく、<<演算子の優先順位が+より低いのにハマってるよ。
*2にしても多分同じオブジェクトが出るとは思うけどね。

↓結果
int main(void){
 char *s[4] = { " %d¥n","Fizz¥n","Buzz¥n","FizzBuzz¥n"};
 int i;
 for (i=1;i<=100;i++)printf(s[(!(i%5)<<1)+!(i%3)],i);
}


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


347:仕様書無しさん
11/06/11 21:07:23.93
Link: URLリンク(codepad.org)

int main(void){
char *s[4] = { "  ","Fizz","Buzz","FizzBuzz"};
int i;
for (i=1;1<=100;i++){
sprintf(s[0],"%d",i)
puts(s[(i%5==0)<<1+(i%3==0)]);
}
}

In function 'main':
Line 6: error: expected ';' before 'puts'

348:仕様書無しさん
11/06/11 21:09:13.71
Link: URLリンク(codepad.org)

int main(void){
char *s[4] = { "  ","Fizz","Buzz","FizzBuzz"};
int i, j;
for (i=1;1<=100;i++){
j=(i%5==0)<<1+(i%3==0);
if(j==0)
sprintf(s[0],"%d",i);
puts(s[j]);
}
}


Output:
Segmentation fault

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

350:仕様書無しさん
11/06/12 12:27:40.95
int main(void){
char *p, c[] = " ";
char *s[] = { "","Fizz","Buzz","FizzBuzz"};
int i, j, k;

s[0] = c;
for (i=1;i<=100;i++){
j = ((i%5 == 0)<<1) + (i%3 == 0);
if(j==0) {
p = c;
k = i;
if(k >= 100) {
*p++ =k/100 +'0';
k =k%100;
}
if(k >= 10) {
*p++ =k/10 +'0';
k =k%10;
}
*p++ =k +'0';
*p = NULL;
}
puts(s[j]);
}
return 0;
}
動くようにするとこうだな
sprintfはよくわからんのではずしたわ


351:仕様書無しさん
11/06/12 18:18:48.82
平凡

use strict ;

my $m3 = 3 ;
my $m5 = 5 ;
for( my $n = 1 ; $n <= 100 ; ++$n ) {
if( $m3 == $n ) {
$m3 += 3 ;
if( $m5 == $n ) {
$m5 += 5 ;
print STDOUT "FizzBuzz\n" ;
} else {
print STDOUT "Fizz\n" ;
}
next ;
}
if( $m5 == $n ) {
$m5 += 5 ;
print STDOUT "Buzz\n" ;
next ;
}
print STDOUT $n, "\n" ;
}
exit(0) ;
__END__


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

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

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

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


















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


355:uy ◆yyC0rYWEq2
11/06/16 22:02:56.19
メタでかけよ

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


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


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

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


360:仕様書無しさん
11/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:仕様書無しさん
11/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:仕様書無しさん
11/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:仕様書無しさん
11/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:仕様書無しさん
11/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
11/07/21 23:31:27.81
>>363
そんなかんたんにいくのね・・・

366:仕様書無しさん
11/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:仕様書無しさん
11/08/01 10:23:28.39
\nに直すの忘れてたが多分どうでもいいな

368:仕様書無しさん
11/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:仕様書無しさん
11/08/07 04:20:51.13
見返したら色々間違えてる。なんかカオス。
俺赤面。こんな時間に眠い目こするからいけなかったんだ(言い訳

もう寝る。お休み

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

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

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

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

374:仕様書無しさん
11/08/07 20:10:30.23
>>368
関数の型をうろ覚えで済ますな、ぐぐれ

ループの範囲が1から100までなんだから、素直に1と100をコードに入れられるならそうした方が見やすい
つーかループ変数の初期化とか更新とかはforを使えばもっと見やすいし、見やすければバグりにくい
最近のC/C++のforならスコープも付くしな

375:仕様書無しさん
11/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:仕様書無しさん
11/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:仕様書無しさん
11/08/25 17:58:22.94
>>352

1 可変性

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

2 実行速度

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


378:仕様書無しさん
11/08/25 19:01:16.31
>>375-376まで行くと、可変性を無駄に重視しすぎだろ
要求が変更されたら、コードを書き換えて対応するのは当たり前なんだから、ほどほどに書き換えが
やりやすくなってりゃいいのよ
実行効率どころか可読性まで大きく落として、まだ見ぬ要求変更の可能性に幅広く対応するのは無駄

379:仕様書無しさん
11/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:仕様書無しさん
11/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:仕様書無しさん
11/08/26 17:24:33.68
そんなピンポイントな仕変出す客おるかいw

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

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

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

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

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

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

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

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

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

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

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

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

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

391:仕様書無しさん
11/08/27 22:08:29.33
unsignedも付けろ

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

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


394:仕様書無しさん
12/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:仕様書無しさん
12/02/13 22:10:32.70
RU-PU. がいいね。

396:仕様書無しさん
12/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:仕様書無しさん
12/02/14 20:47:20.57
>If i Mod 10 = 0 Then
???

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

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

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

401:仕様書無しさん
12/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" など)で。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch