Kawa.netブログ(川崎有亮)

アクセスカウンタ

help リーダーに追加 RSS [Perl] Fizz-Buzz問題 (60 bytes)

<<   作成日時 : 2007/05/12 18:05   >>

トラックバック 0 / コメント 0

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さん)

設定テーマ

関連テーマ 一覧

月別リンク

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文

EDGE Now!