Menu
CoddyTech

Thêm biến tấu

Thuộc phần Kiến thức nền tảng trong hành trình R của Coddy. Bài học 55 trên 78.

challenge icon

Thử thách

Dễ

Ở bài học trước, bạn đã tạo một chương trình FizzBuzz dùng vòng lặp để duyệt qua các số với ước số mặc định là 3 và 5. Bây giờ, hãy thêm điểm mới bằng cách cho phép tùy chỉnh các ước số thông qua tham số mặc định.

Sửa hàm (function) fizzbuzz để nhận ba đối số:

  • n: số cần kiểm tra (bắt buộc)
  • fizz_divisor: ước số cho "Fizz" (không bắt buộc, mặc định là 3)
  • buzz_divisor: ước số cho "Buzz" (không bắt buộc, mặc định là 5)

Hàm cần dùng các ước số tùy chỉnh này thay cho các giá trị được ghi cố định khi kiểm tra tính chia hết.

Bạn sẽ nhận được ba dòng đầu vào:

  1. Giới hạn trên n
  2. Ước số fizz
  3. Ước số buzz

Dùng vòng lặp từ 1 đến n và gọi hàm fizzbuzz đã cập nhật với cả ba đối số. In ra từng kết quả.

Ví dụ, nếu đầu vào là:

10
2
3

Đầu ra sẽ là:

[1] "1"
[1] "Fizz"
[1] "Buzz"
[1] "Fizz"
[1] "5"
[1] "FizzBuzz"
[1] "7"
[1] "Fizz"
[1] "Buzz"
[1] "Fizz"

Nếu đầu vào là:

15
3
5

Đầu ra sẽ là:

[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"

Tự làm thử

# 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))
}

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch R online