D06 Fizz Buzz問題
プログラミング能力を測るための、次のようなプログラムを作成する課題をFizz Buzz問題と言います。(「GeoGebra日本」の同名のページから)
1から100までの整数を表示する。
ただし、3の倍数のときは数の代わりに Fizz と表示し
5の倍数のときは Buzz と表示し
3の倍数かつ5の倍数のときは Fizz Buzz と表示する
「1から100まで」とありますが,GeoGebra日本の該当ページにならって,関数化しましょう。
fizzbuzz(n):=(
msg=["Fizz","Buzz","FizzBuzz"];
repeat(n,
res=0;
if(mod(#,3)==0,res=1);
if(mod(#,5)==0,res=2);
if(mod(#,3)==0 & mod(#,5)==0,res=3);
if(res==0,println(#),println(msg_res));
);
);
"FizzBuzz" が "Fizz" と "Buzz" をつなげたものであることを利用すると,次のようにすることもできます。
2行減らせます。
fizzbuzz(n):=(
repeat(n,
msg="";
if(mod(#,3)==0,msg="Fizz");
if(mod(#,5)==0,msg=msg+"Buzz");
if(msg=="",println(#),println(msg));
);
);
Cindyscriptでは,文字列を + で結合することができます。