これを読んでへーと思って、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