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

言語自由

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

208 名前:仕様書無しさん [2009/09/23(水) 00:23:36 ]
Fortran90

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

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

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

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

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

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


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

213 名前:仕様書無しさん [2009/10/19(月) 21:26:19 ]
出来るだけ短く
ここで一応動いたよ。→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 名前:仕様書無しさん mailto:sage [2009/10/19(月) 22:09:10 ]
これはコードゴルフじゃないんだぜ。

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

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

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

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



216 名前:コード書き忘れた mailto:sage [2009/10/19(月) 22:30:41 ]
++++++++++f

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

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

218 名前:Go mailto:sage [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")
 }
}


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

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


221 名前:うゆ ◆e6.oHu1j.o mailto:sage [2009/12/03(木) 05:10:19 ]

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

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


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

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

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

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

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

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

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



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

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

228 名前:仕様書無しさん mailto:sage [2010/04/23(金) 01:44:07 ]
Script kiddie ?

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


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

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


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

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

233 名前:231 mailto:sage [2010/04/23(金) 15:26:12 ]
>>232
あー そこか


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

235 名前:234 mailto:sage [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); }




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

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

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

238 名前:仕様書無しさん mailto:sage [2010/04/24(土) 10:03:06 ]
%を忘れた人のため:その2

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

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

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

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

240 名前:仕様書無しさん mailto:sage [2010/04/24(土) 13:09:56 ]
>238の応用
その3 ifも忘れた人のため

#include <stdio.h>

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

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


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


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

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

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

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

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

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

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

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

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

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

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



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

247 名前:243 mailto:sage [2010/04/25(日) 09:43:48 ]
>>244
違っていたか。しぼって考えてみます。

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

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

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



まとめると:

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

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

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

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

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

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

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

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



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

安直だなぁ、自分。

257 名前:仕様書無しさん [2010/05/23(日) 04:13:08 ]
>>256

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

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

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

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

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

262 名前:仕様書無しさん mailto:sage [2010/05/28(金) 02:01:12 ]
Python、短絡評価とジェネレータ内包表記で。

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

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

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

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

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

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

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

265 名前:仕様書無しさん mailto:sage [2010/05/31(月) 13:29:59 ]
>>263-264
こう書きたかったんだろうけど、iの値が常に表示されてしまう

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



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


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

Python3で書き直し。

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

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

269 名前:仕様書無しさん mailto:sage [2010/06/01(火) 00:26:53 ]
#include <stdio.h>
#include <stdlib.h>

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

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

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

次はLuaでやろうかな

271 名前:仕様書無しさん mailto:sage [2010/06/01(火) 23:42:58 ]
ミス

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

こうかな?

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

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


274 名前:仕様書無しさん [2010/06/02(水) 03:36:33 ]
アウトプットを修正

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


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



276 名前:仕様書無しさん mailto:sage [2010/06/02(水) 03:51:17 ]
てーか>1読んでから書けよ馬鹿

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

278 名前:仕様書無しさん [2010/06/02(水) 04:01:21 ]
大文字の事?

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


279 名前:仕様書無しさん mailto:sage [2010/06/02(水) 04:05:52 ]

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


280 名前:仕様書無しさん [2010/06/02(水) 04:11:15 ]
>>279
ちょっと綺麗に手直ししてくれてサンクス

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

for a in fizzbuzz():
  print a,


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



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

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

for s in fizzbuzz():
 print s

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

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

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

for s in fizzbuzz():
 print s

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

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

とかに変えたりな

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

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

301 名前:仕様書無しさん [2010/06/06(日) 01:21:02 ]
for i in range(1,101):

script = i

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

print script

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

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

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

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



306 名前:仕様書無しさん mailto:sage [2010/06/25(金) 15:51:42 ]
dc

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

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









[ 続きを読む ] / [ 携帯版 ]

前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