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

言語自由

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)
}
}




308 名前:仕様書無しさん mailto:sage [2010/07/28(水) 23:27:57 ]
これは酷い…。

309 名前:仕様書無しさん mailto:sage [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関数の戻り値
 }

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

311 名前:307 mailto:sage [2010/07/29(木) 19:09:51 ]
>>309
わお。訂正していただけて、マジ参考になりますthx
つか俺は文法勉強しなおしだー・・・

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



313 名前:仕様書無しさん [2010/09/20(月) 20:33:16 ]
print 1
print 2
print Fizz
print 4
print Buzz
print Fizz
...
end.

314 名前:仕様書無しさん mailto:sage [2010/09/22(水) 00:04:40 ]
>>312
printfの引数、なにそれ?

315 名前:仕様書無しさん mailto:sage [2010/09/24(金) 21:14:51 ]
とりあえず動かして見ろ

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

317 名前:仕様書無しさん mailto:sage [2010/09/25(土) 01:08:43 ]
あ、いけね俺も失敗してら。結果は見た目正常風だとは思うが。

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

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


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

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

>>320
宗教論争

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



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

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

325 名前:仕様書無しさん mailto:sage [2011/01/18(火) 02:22:56 ]
↑「幅優先探索」とか、答え書かないでよ…。

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

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

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

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

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

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

330 名前:325 mailto:sage [2011/01/18(火) 04:44:16 ]
あ、出来た。
嫌々やるのやめて、コード整理したら、出来た。

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

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

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

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

332 名前:325 mailto:sage [2011/01/18(火) 15:33:00 ]
>>331
あれって、総当り方式じゃん。左側か右側かの壁伝ってくんだっけ?


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

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



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

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

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

334 名前:仕様書無しさん mailto:sage [2011/02/06(日) 02:07:41 ]
>>324
ためしにやってみた
hibari.2ch.net/test/read.cgi/tech/1215352849/294

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

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







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

前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