今回は腕試しにFizzBuzz問題をR言語を用いて解いてみた.どこかでコンピュータサイエンスの学科を卒業した連中でも,この問題がさらっと解けるか怪しいのが多いという記事を読んだのだが,本当なのだろうかと疑います.
FizzBuzz <- function(n){ if( n < 1 ){ return(-1) } strs <- character(n) for( i in 1:n ){ if( i %% 3 == 0 && i %% 5 == 0 ){ strs[i] <- "FizzBuzz" }else if( i %% 3 == 0 ){ strs[i] <- "Fizz" }else if( i %% 5 == 0 ){ strs[i] <- "Buzz" }else{ strs[i] <- as.character(i) } } return(strs) }
こうしておいて,いくつかの入力を試してみると,
> FizzBuzz(-3) [1] -1 > FizzBuzz(20) [1] "1" "2" "Fizz" "4" "Buzz" "Fizz" [7] "7" "8" "Fizz" "Buzz" "11" "Fizz" [13] "13" "14" "FizzBuzz" "16" "17" "Fizz" [19] "19" "Buzz"
となって,無事できてそうな雰囲気である.入力が文字列型ならばエラーで落ちてくれるのでOKとしておこう.