これを読んでへーと思って、R言語でFizzBuzz問題をやってみました。
1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、
3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
で、自分の回答は以下(2分ほど+1回ミス)
a<-seq(100)
b<-a
b[a%%3==0]<-"Fizz"
b[a%%5==0]<-"Buzz"
b[a%%15==0]<-"FizzBuzz"
b
また、技術職員の涌井さん(将来、有名になると思うよ!!)のJavaScriptによるプログラムは以下でした。
// [n,m)のFizzBuzz
function fizzBuzz(n, m) {
// 入力の規約 (暗黙の型変換を考慮して文字列クラスでCHK)
if(!n.toString().match(/^-?[0-9]+$/)) return 'nは整数に限るのです';
if(!m.toString().match(/^-?[0-9]+$/)) return 'mは整数に限るのです';
// Fizz or Buzz or FizzBuzz or Number
var str = '';
if(0 == n%3) str+='Fizz';
if(0 == n%5) str+='Buzz';
if(!str) str = n;
if(n < m) return str + '\n' + fizzBuzz(++n, m);
if(n > m) return str + '\n' + fizzBuzz(--n, m);
return ''; // 再帰の終了条件でもある. (n == m)
}
alert( fizzBuzz( 1 , 101 ) ); // OK
alert( fizzBuzz(100, 0 ) ); // OK(数え下げる)
alert( fizzBuzz(100, -101 ) ); // OK
alert( fizzBuzz('1','101') ); // OK(暗黙の型変換が行われる)
alert( fizzBuzz('a','bcd') ); // NG