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では,文字列を + で結合することができます。