Fizz-Buzz問題だそうです

投稿日: 更新日:

今日はネットでFizz-Buzz問題というものを見つけた。
どうしてプログラマに・・・プログラムが書けないのか?

http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

>かなりの試行錯誤の末に、コードを書こうともがいている人たちというのは、
>単に大きな問題に対して苦労しているのではないことがわかった。
>やや小さな問題(連結リストを実装するというような)に対して苦労するということでさえない。
>彼らはまったくちっぽけな問題に苦労しているのだ。
>
>それで、そういった類の開発者を見分けるための質問を作り始め、
>私が「Fizz-Buzz問題」と呼んでいる問題のクラスを考え出した。
>これはイギリスの学校の子供たちがよくやっている遊び(というかやらされている遊び)にちなんで名付けた。
>Fizz-Buzz問題の例はこんな感じだ。
>
>1から100までの数をプリントするプログラムを書け。
>ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、
>3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
うん。
実際に適当考えてみた^^
単純な問題なんだけど、どうすれば短くなるのか、効率よく作れるか、とか考えるのが面白い。
まず得意なHSP ^^
#runtime "hsp3cl.hrt"
for i,1,101,1:t="":f="":if i\3=0:t="Fizz"
if i\5=0:f="Buzz"
if t=""&f="":mes i:else:mes t+f
next

Size:122
Statistics:0B / 68B / 38B

次は1年間がんばったC ^^
#include <stdio.h>
main(){int i;for(i=1;i<101;i++){if(!!(i%3)&!!(i%5)){printf("%d\n",i);}else{printf("%s%s\n",i%3?"":"Fizz",i%5?"":"Buzz");}}}

Size:143
Statistics:0B / 71B / 68B

ここでみんなが投稿したコードのサイズや早さが見えるんだけど、

GolfScriptっていうのが、すごいファイルサイズ短くて気になった。Rubyで作られてるらしい

ちなみにサイズとか測るのはこんな感じで作ってみた。
p = "C:/****":exist p:i = strsize
sdim b,i:bload p,b,i:repeat i:n=peek(b,cnt)
if ' '=n|'\t'=n|$d=n|$a=n:else:if '/'<n&n<':'|'@'<n&n<'['|'`'<n&n<'{':a++:else:s++
loop:mes "Size:"+i:mes "Statistics:0B / "+a+"B / "+s+"B"

ところで

>実際的な問題を解くのに再帰が使えない候補者をたくさん面接してきた。
>これらは基本的なスキルであり、それを欠いた人に多くのプログラミング経験があるとは思えない。

って書いてあるけど、再帰は結構、苦手。再帰で応用とかかなり頭つかって面倒。
7月の最初までにはコツみたいなの勉強しておきたい。と書きつつ、しないと思うけど^^;

広告

コメントをどうぞ(承認された後に公開されます。メールアドレスの記入は自由ですが、記入した場合でも一般公開されることはありません)

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中