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.
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:
- Giới hạn trên
n - Ước số fizz
- Ướ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
4Toán tử phần 2
Toán tử logic (AND, OR)Toán tử logic phần 2 (NOT)Ôn tập: logic đơn giảnLogic vector hóa phần 1Logic vector hóa phần 22Biến và kiểu dữ liệu
Kiểu dữ liệu sốKiểu dữ liệu số nguyênKiểu dữ liệu ký tựKiểu dữ liệu logicKiểm tra kiểu dữ liệuQuy tắc đặt tênGiá trị thiếu: NATóm tắt: tạo biến8Vòng lặp
Vòng lặp forVòng lặp whileBreakNext (continue)Ôn tập: giai thừaTạo dãy (seq, :)Vòng lặp lồng nhauÔn tập: đầu vào động3Toán tử phần 1
Toán tử số họcPhép chia lấy phần nguyên và phép moduloToán tử gánÔn tập: phép tính đơn giảnToán tử so sánh6Nhập xuất cơ bản
In đầu raDùng cat để in đầu raĐầu ra với biếnĐọc đầu vào bằng readline()Cơ bản về chuyển đổi kiểuÔn tập: máy tính tuổiÔn tập: đúng hay sai9Hàm
Khai báo hàmĐối số hàmGiá trị trả vềÔn tập: hàm SigmaÔn tập: hàm xác thựcGiá trị tham số mặc địnhTự luyện tập: Trình biên dịch R online