アレンジを加える
CoddyのRジャーニー「基礎」セクションの一部 — レッスン 55/78。
チャレンジ
簡単前回のレッスンでは、デフォルトの除数である 3 と 5 を使用して数値をループする FizzBuzz プログラムを作成しました。今回は、デフォルト引数を使用して除数をカスタマイズできるように変更を加えましょう。
fizzbuzz 関数を、3 つの引数を受け取るように修正してください:
n- チェックする数値(必須)fizz_divisor- "Fizz" のための除数(任意、デフォルトは3)buzz_divisor- "Buzz" のための除数(任意、デフォルトは5)
関数は、割り切れるかどうかをチェックする際に、ハードコードされた値ではなく、これらのカスタム除数を使用する必要があります。
3 行の入力を受け取ります:
- 上限
n - fizz の除数
- buzz の除数
1 から n までループし、更新した fizzbuzz 関数を 3 つすべての引数とともに呼び出します。各結果を出力してください。
例えば、入力が以下の場合:
10
2
3出力は以下のようになります:
[1] "1"
[1] "Fizz"
[1] "Buzz"
[1] "Fizz"
[1] "5"
[1] "FizzBuzz"
[1] "7"
[1] "Fizz"
[1] "Buzz"
[1] "Fizz"入力が以下の場合:
15
3
5出力は以下のようになります:
[1] "1"
[1] "2"
[1] "Fizz"
[1] "4"
[1] "Buzz"
[1] "Fizz"
[1] "7"
[1] "8"
[1] "Fizz"
[1] "Buzz"
[1] "11"
[1] "Fizz"
[1] "13"
[1] "14"
[1] "FizzBuzz"自分で試してみよう
# Read input
con <- file("stdin", "r")
n <- as.numeric(suppressWarnings(readLines(con, n = 1)))
# Function from previous lesson
check_divisible <- function(number, divisor) {
return(number %% divisor == 0)
}
# Create the fizzbuzz function
fizzbuzz <- function(n) {
if (check_divisible(n, 3) && check_divisible(n, 5)) {
return("FizzBuzz")
} else if (check_divisible(n, 3)) {
return("Fizz")
} else if (check_divisible(n, 5)) {
return("Buzz")
} else {
return(as.character(n))
}
}
# Loop through numbers from 1 to n and print the result
for (i in 1:n) {
print(fizzbuzz(i))
}