1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。より Fizz-Buzz 問題。 最初のバージョン (66 bytes) perl -le'print((!($_%3)&&"Fizz").(!($_%5)&&"Buzz")||$_)for 1..100'Perlらしく、記号が多い。 文字列の "" を外すことができるが、文字列の前が & だと 関数呼び出しと曖昧な表現になるので△。 not の and を取る演算子がないので、カッコも増えて、ちょと長い。 三項演算子を使うとちょっと短くなる。 (60 bytes) perl -le'print(($_%3?"":Fizz).($_%5?"":Buzz)||$_)for 1..100' このくらいでギブアップ。 ひおにっきさん。(56 bytes) perl -le'print+(Fizz)[$_%3].(Buzz)[$_%5]||$_ for 1..100'配列を使って、0のときに文字列が取り出せるようにしている。 これも Perl ならではの表現? 賢いッ! + を使うのは、出力先ハンドルと区別させるためなのかな。 カッコを使っても同じ長さで少し分かりやすい。(56 bytes) perl -le'print((Fizz)[$_%3].(Buzz)[$_%5]||$_)for 1..100' まとめサイト(TAKESAKOさん) |
| << 前記事(2007/05/05) | トップへ | 後記事(2007/05/15)>> |
| タイトル (本文) | ブログ名/日時 |
|---|
| 内 容 | ニックネーム/日時 |
|---|
| << 前記事(2007/05/05) | トップへ | 後記事(2007/05/15)>> |