アカウント名:
パスワード:
print "1\n";print "2\n";print "Fizz\n;
#!/usr/local/bin/perl print "#!/usr/local/bin/perl"; for (my $i==1; $i<=100; $i++){ if (($i % 15)==0) {print "print \"FizzBuzz\\n\";\n"; next;}; if (($i % 3)==0) {print "print \"Fizz\\n\";\n"; next;}; if (($i % 5)==0) {print "print \"Buzz\\n\";\n"; next;}; print "print \"$i\\n\";\n";};
・3の倍数は"0" "3" "6" "9"が任意個、"1" "4" "7"の個数の合計と"2" "5" "8"の個数の合計が等しい。
本当は「各桁の合計が3の倍数」なので「個数が等しい」ではないですね。失礼しました。
f = "":"":"Fizz":fb = "":"":"":"":"Bazz":bfizzbazz = map (\(x,y,z)->(show x)++y++z) (zip3 [1..] f b)main = print $ take 100 fizzbazz
/^[0369]+|[147][258]|[258][147]$/
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
ついでに (スコア:0)
#★★★とか?
情報処理技術者 (スコア:0)
Re:情報処理技術者 (スコア:1, 参考になる)
ITだけじゃなくて有資格者って事だけじゃ判断付かないから、資格そのものが無意味になってきていると思う。
資格より職歴やサークル活動歴、オタク歴などの方がよほど参考になるよ。
Re:情報処理技術者 (スコア:5, 興味深い)
個人的には『SEなら資格取るのなんて楽勝 [yahoo.co.jp]』にて、
| あ、でも試験会場に行くと、現場で働いてる人かそうでないかはひと目でわかります。
| 午前が終わると暗い顔してるのが現場の人で、午後が終わると暗い顔してるのが学生さん。
| 現場の人は「筆記は苦手だけど、午後のプログラム試験なんか試験にもならん。
と書いてあるのはかなり驚きなんですが。学生のときにソフトウェア開発技術者試験を受験しましたが、むしろ、午後試験
Re:情報処理技術者 (スコア:1)
すみません。 って書いてこうとしたら2分じゃ書けそうになかったので、こんな風に書いたのですが、3分ぐらい掛かっちゃいました。
Re:情報処理技術者 (スコア:1)
いりません。あと、FizzとBuzzの印字で改行はいりません。
で、ループ直前に改行をする。
perlは知らんので文法は間違ってたらごめん。
#4年前にやめた業界だけど、文字通り目隠ししても作れました。
Re:情報処理技術者 (スコア:0)
3分でちょっと色気出そうとしたら全然面白くなかった。
print <<'FizzBuzz';
#!/usr/local/bin/perl
local $\ = "\n";
for my $i (1 .. 100) {
$_ = $i;
s/\d*$/Fizz/ unless $i % 3;
s/\d*$/Buzz/ unless $i % 5;
print;
};
FizzBuzz
Re:情報処理技術者 (スコア:0)
Re:情報処理技術者 (スコア:0)
Pythonだとワンライナーで
for x in ['FizzBuzz' if x==x/15*15 else 'Fizz' if x==x/3*3 else 'Buzz' if x==x/5 else x for x in range(1,101)]:print x
ですかね
Re:情報処理技術者 (スコア:2, すばらしい洞察)
「剰余を使ってはいけない」という条件の記述はなかったんだけど,有名なんですかこれ
------------
二次以外おことわり
FizzBuzz by Scheme (スコア:1)
(define (fizzbuzz-iter cnt cnt3 cnt5 result-list)
(cond
((= cnt 0) result-list)
((and (= cnt3 0) (= cnt5 0)) (fizzbuzz-iter (- cnt 1) 2 4 (cons 'Fizzbuzz result-list)))
((= cnt3 0) (fizzbuzz-iter (- cnt 1) 2 (- cnt5 1) (cons 'Fizz result-list)))
((= cnt5 0) (fizzbuzz-iter (- cnt 1) (- cnt3 1) 4 (cons 'Buzz result-list)))
(else (fizzbuzz-iter (- cnt 1) (- cnt3 1) (- cnt5 1) (cons cnt result-list)))))
(define (fizzbuzz)
(fizzbuzz-iter 100 1 0 '()))
(fizzbuzz)
# 求む Scheme programmer
剰余禁止なら整数型のかけ算、割り算も禁止しないとあまり意味が無いと思う。
ここで示したカウンターを使う方法の他には足し算を使って地道に表を作る方法と配列に上書きする方法、予め計算した結果を表示するずるい方法しか剰余禁止ルールの解法は知らないけど、他になんかあるんだろうか。
文字列操作 (スコア:1)
十進で書いた場合、
・3の倍数は"0" "3" "6" "9"が任意個、"1" "4" "7"の個数の合計と"2" "5" "8"の個数の合計が等しい。
・5の倍数は下の桁が"0" "5"。
ってことを使うとか?
# Cでかけたけど、あんまり綺麗にならなかったので。
# スキルが足りん……。
勘違い (スコア:1)
本当は「各桁の合計が3の倍数」なので「個数が等しい」ではないですね。失礼しました。
Re:勘違い (スコア:1)
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
int i, j, chk3;
char c, buf[10];
for (i = 1; i = 100; i++) {
snprintf(buf, sizeof(buf), "%03d", i);
for (j = 0, chk3 = 0; j 3; j++) {
c = buf[j];
if (c == '1' || c == '4' || c == '7')
chk3 += 1;
if (c == '2' || c == '5' || c == '8')
chk3 += 2;
}
if (chk3 == 0 || chk3 == 3 || chk3 == 6) {
printf("Fizz");
buf[0] = '\0';
}
c = buf[2];
if (c == '0' || c == '5') {
printf("Buzz");
buf[0] = '\0';
}
printf("%s ", buf);
}
printf("\n");
return EXIT_SUCCESS;
}
あまり急いで作るつもりがなかったのでちんたらやっていたら構想から実装まで10分程度使ってしまいました。
これでは自称上級プログラマーじゃん。(--;
Re:FizzBuzz by Scheme (スコア:0)
Re:勘違い (スコア:2)
誤:
| for (i = 1; i = 100; i++) {
正
| for (i = 1; i <= 100; i++) {
誤
| for (j = 0, chk3 = 0; j 3; j++) {
正
| for (j = 0, chk3 = 0; j < 3; j++) {
Re:勘違い (スコア:1)
N = Σ10n an
のようにあらわすと、10≡1 (mod 3)だから、10n≡1で、
N ≡ Σ an (mod 3)
となって各桁の合計の剰余と等しくなるわけですね。
Re:勘違い (スコア:0)
Re:勘違い (スコア:0)