Menu
Coddy logo textTech

הוספת הטוויסט

חלק מהיחידה יסודות במסלול ה-R של Coddy. שיעור 55 מתוך 78.

challenge icon

אתגר

קל

בשיעור הקודם יצרת תוכנית FizzBuzz שעוברת בלולאה על מספרים באמצעות המחלקים המוגדרים כברירת מחדל, 3 ו־5. עכשיו נוסיף טוויסט ונאפשר להתאים אישית את המחלקים באמצעות פרמטרים המוגדרים כברירת מחדל.

שנה את הפונקציה fizzbuzz כך שתקבל שלושה ארגומנטים:

  • n - המספר לבדיקה (נדרש)
  • fizz_divisor - המחלק עבור "Fizz" (אופציונלי, ברירת המחדל היא 3)
  • buzz_divisor - המחלק עבור "Buzz" (אופציונלי, ברירת המחדל היא 5)

הפונקציה צריכה להשתמש במחלקים המותאמים אישית האלה במקום בערכים מקודדים בקשיח בעת בדיקת ההתחלקות.

תקבל שלוש שורות קלט:

  1. הגבול העליון n
  2. המחלק של fizz
  3. המחלק של buzz

עבור בלולאה מ־1 עד n וקרא לפונקציה המעודכנת fizzbuzz עם כל שלושת הארגומנטים. הדפס כל תוצאה.

לדוגמה, אם הקלט הוא:

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

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר R אונליין