הוספת הטוויסט
חלק מהיחידה יסודות במסלול ה-R של Coddy. שיעור 55 מתוך 78.
אתגר
קלבשיעור הקודם יצרת תוכנית FizzBuzz שעוברת בלולאה על מספרים באמצעות המחלקים המוגדרים כברירת מחדל, 3 ו־5. עכשיו נוסיף טוויסט ונאפשר להתאים אישית את המחלקים באמצעות פרמטרים המוגדרים כברירת מחדל.
שנה את הפונקציה fizzbuzz כך שתקבל שלושה ארגומנטים:
n- המספר לבדיקה (נדרש)fizz_divisor- המחלק עבור "Fizz" (אופציונלי, ברירת המחדל היא3)buzz_divisor- המחלק עבור "Buzz" (אופציונלי, ברירת המחדל היא5)
הפונקציה צריכה להשתמש במחלקים המותאמים אישית האלה במקום בערכים מקודדים בקשיח בעת בדיקת ההתחלקות.
תקבל שלוש שורות קלט:
- הגבול העליון
n - המחלק של fizz
- המחלק של 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))
}כל השיעורים ביחידה יסודות
4אופרטורים חלק 2
אופרטורים לוגיים (AND, OR)אופרטורים לוגיים חלק 2 (NOT)חזרה – לוגיקה פשוטהלוגיקה וקטורית חלק 1לוגיקה וקטורית חלק 27מחשבון לחלוקת החשבון
הודעת פתיחהקבלת קלט מהמשתמש2משתנים וסוגי נתונים
סוג נתונים מספריסוג נתונים שלמיםסוג נתונים של תוויםסוג נתונים לוגיבדיקת סוגי נתוניםמוסכמות למתן שמותערכים חסרים: NAסיכום – יצירת משתנים8לולאות
לולאת forלולאת whileפקודת breakהמשך (continue)סיכום – עצרתיצירת רצפים (seq, :)לולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםחלוקת מספרים שלמים ומודולואופרטורי השמהחזרה – חשבון פשוטאופרטורי השוואה6קלט/פלט בסיסי
הדפסת פלטחתול כפלטפלט עם משתניםקריאת קלט באמצעות readline()יסודות המרת טיפוסיםחזרה – מחשבון גילחזרה – אמת או שקר9פונקציות
הכרזה על פונקציהארגומנטים של פונקציהערכי החזרהסיכום – פונקציית סיגמאסיכום – פונקציית אימותערכי ברירת מחדל לפרמטריםתרגלו בעצמכם: קומפיילר R אונליין