RosettaCodeData/Task/General-FizzBuzz/R/general-fizzbuzz-1.r
2023-07-01 13:44:08 -04:00

18 lines
814 B
R

genFizzBuzz <- function(n, ...)
{
args <- list(...)
#R doesn't like vectors of mixed types, so c(3, "Fizz") is coerced to c("3", "Fizz"). We must undo this.
#Treating "[[" as if it is a function is a bit of R's magic. You can treat it like a function because it actually is one.
factors <- as.integer(sapply(args, "[[", 1))
words <- sapply(args, "[[", 2)
sortedPermutation <- sort.list(factors)#Required by the task: We must go from least factor to greatest.
factors <- factors[sortedPermutation]
words <- words[sortedPermutation]
for(i in 1:n)
{
isFactor <- i %% factors == 0
print(if(any(isFactor)) paste0(words[isFactor], collapse = "") else i)
}
}
genFizzBuzz(105, c(3, "Fizz"), c(5, "Buzz"), c(7, "Baxx"))
genFizzBuzz(105, c(5, "Buzz"), c(9, "Prax"), c(3, "Fizz"), c(7, "Baxx"))