| SQLインジェクション対策はおすみですか? 開発開始時点からのコンサルティングから、公開済みWebサイトの脆弱性検査、 脆弱性発見後の適切な対策まで |
2007-05-24 プログラム書法
●FizzBuzzのプログラム書法
今話題のどうしてプログラマに・・・プログラムが書けないのか?に関して、FizzBuzz問題がネットを賑やかしてますね。
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
ワンライナーとかはゲームなのでそれにクレームをつけるのはヤボだというのは分かっているのですが、元ネタの趣旨から言うと、トリッキーなプログラムが書けることよりは、ごくフツーのプログラムを正確に素早く書けることが求められているわけです。
では、ごくフツーに書いたらどうなるかということですが、たとえばPerlで書いてみると、
#!perl use strict; for (my $i = 1; $i <= 100; $i++) { if ($i % 3 == 0 && $i % 5 == 0) { print "FizzBuzz\n"; } elsif ($i % 3 == 0) { print "Fizz\n"; } elsif ($i % 5 == 0) { print "Buzz\n"; } else { print "$i\n"; } }
こんな感じでしょうか?
実は、FizzBuzz問題を見たときには、数秒間ためらいがありました。
それと、ワンライナーたちは、「i <= 100」ではなくて「i<101」とする例がほとんどですが、こうする理由は1文字減るからでしょうね。ですが、書法としてはまずい書き方ですよね。
FizzBuzz問題を想定どおり「入社試験」として出す場合であれば、私であれば「i < 101」を減点すると思います。
私はセキュリティを生業にしていますが、その立場からもプログラム書法は大事だなぁと思っています。セキュリティホールは一種のバグであって、バグを根絶するためにはプログラムの正しい書き方に従うことが重要だと思うからです。
※これははてなダイアリーからの転載です。
- http://search.live.com/results.aspx?q=プログラムの実行 遅くな... ×4
- http://bloger.x0.com/result/脱出ゲーム/脱出ゲーム ドラ ×2
- http://search.live.com/results.aspx?q=fizzbuzz&for... ×2
- http://s.luna.tv/search.aspx?client=lunascape&s=0&... ×1
- http://search.live.com/spresults.aspx?q=3 の倍数プログラム... ×1
- http://www.bloglines.com/search?q=buzz&ql=ja&s=f&p... ×1
- http://erokey.ddo.jp/diary2/話題のキーワード/話題のキーワード 韓国ドラ... ×1
- http://search.live.com/results.aspx?mkt=ja-jp&FORM... ×1
- http://search.auone.jp/?q=fizz プログラム&sr=0201 ×1
- http://pious-act.com/5065726C/ ×1
- http://erokey.ddo.jp/diary2/話題のキーワード/20070901.html... ×1
- http://www.tokumaru.org/ ×1
- http://aff.80code.com/feedred/view.php?view=frames... ×1
- http://www.yahoogle.jp/redirect.php?url=http://www... ×1
- http://books.netkids.jp/charts/day/4320020855/ ×1
- http://pc.matome.jp/keyword/ワンライナー ×1
- キーワード不明 ×9 / FizzBuzz問題 perl ×5 / FizzBuzz問題 ×4 / FizzBuzz ×3 / 1から100までの数をプリントするプログラムを書け。 ×3 / FizzBuzz ワンライナー ×3 / プログラムが書けない ×2 / 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 ×2 / 1から100までの数をプリントするプログラムを書け ×2 / プログラム書法 ×2 / fizzbuzz プログラム Ruby ×1 / 3の倍数 5の倍数 プログラム ×1 / プログラム ブロック 書法 ×1 / プログラマ テスト Fizz ×1 / 書法 ×1 / 入社試験 3の倍数 ×1 / トリッキーなプログラム ×1 / FizzBuzz perl ×1 / 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントする vb ×1 / fizzbuzz ×1 / fizz buzz switch ×1 / FizzBuzz問題 ruby ワンライナー ×1 / プログラム 書き方 ×1 / プログラム fizzbuzz問題 ×1 / プログラム 3の倍数 ×1 / プログラム 100まで 3の倍数 5の倍数 ×1 / どうしてプログラマ プログラムが書けないのか ×1 / プログラム 入社試験 ×1 / SQL 倍数 ×1 / sql 倍数 ×1 / FizzBuzz プログラム ×1 / 3の倍数 5の倍数 ワンライナー ×1 / プログラマにプログラムがかけない ×1 / 倍数 プログラム ×1 / 入社試験 FizzBuzz ×1 / プログラマ 入社試験内容 ×1 / Fizz Buzz問題 sql ×1 / fizzbuzz トリッキー ×1 / ruby 1から100まで print ×1 / FizzBuzz問題 ワンライナー ×1 / プログラム 倍数の ×1 / プログラム 3の倍数 5の倍数 ×1 / Ruby 書法 ×1 / プログラム fizz buzz ×1 / ワンライナー fizzbuzz perl ×1 / 5の倍数 3の倍数 プログラム ×1 / fizzbuzz問題 ×1 / Fizz Buzz プログラム ×1 / fizzbuzz 速度 ×1 / プログラム 倍数 ×1 / FizzBuzz 問題 ×1
| SQLインジェクション対策はおすみですか? 開発開始時点からのコンサルティングから、公開済みWebサイトの脆弱性検査、 脆弱性発見後の適切な対策まで |