詰めSAS9回目:Fizz_Buzz問題をSASで解く

Fizz_Buzz問題という言葉を聞いたことあるでしょうか?

これは、プログラミング言語を問わずに、その人が本当にその言語の基本的素養を持っているかを簡易に判別する有名なテスト法です。

問題は以下の通りです。

===========================================================
1から100までの数を出力するプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と出力、
5の倍数のときは「Buzz」と出力、
3と5両方の倍数の場合には「FizzBuzz」と出力すること
===========================================================

これを実現するコードを2分以内に作成できれば、OKというものです。
3の倍数だけアホになるようなことをプログラムでしてみろということです。

いろんな言語、たとえばCやJavaやRubyやPerlやVBAやRやら、いろんな言語で
解答が有志によって公開されているんですが、ざっと探したところ
SASが見つからないのです(たぶん誰かすでに絶対公開してるとは思いますが)。

まあFortranによる解答はすぐ見つかって、SASはFortranの影響を強く受けていて
コードも似た感じなので、誰も敢えてやらないのかもしれませんが、、

Rですぐ見つかるのにSASですぐ見つからないのは癪なので、ここで勝手にけりをつけます。

data _NULL_;
file print;
do X=1 to 100;
 if mod(X,15)=0 then put 'FizzBuzz';
 else if mod(X,3)=0 then put 'Fizz';
 else if mod(X,5)=0 then put 'Buzz';
 else put X;
end;
run;

これでどうでしょうか??























結果は多分あっていると思うのですが、自信はありません。
最善手かどうかもわかりません。

他に解答があれば是非ご意見をください




0 件のコメント:

コメントを投稿