Menu
Coddy logo textTech

מה לקנות

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

challenge icon

אתגר

קל

צרו פונקציה בשם what_to_buy שמקבלת שני ארגומנטים: budget (ערך מספרי) ו-prices (וקטור בעל שמות של מחירי פריטים). הפונקציה צריכה להחזיר וקטור תווים שמכיל את שמות כל הפריטים שמחיריהם קטנים מהתקציב או שווים לו.

אם אין פריטים שאפשר להרשות לעצמכם, החזירו וקטור תווים ריק באמצעות character(0).

תקבלו את הקלטים הבאים:

  1. סכום התקציב (מספר)
  2. רשימה של שמות פריטים המופרדים בפסיקים (לדוגמה, apple,banana,steak,bread)
  3. רשימה של המחירים המתאימים המופרדים בפסיקים (לדוגמה, 2,1,15,3)

נתחו את הקלטים כדי ליצור וקטור בעל שמות של מחירים, קראו לפונקציה שלכם והדפיסו את התוצאה. השתמשו ב-print() כדי להציג את וקטור התווים שהוחזר.

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

5
apple,banana,steak,bread
2,1,15,3

הפלט צריך להיות:

[1] "apple"  "banana" "bread"

אם הקלט הוא:

10
laptop,phone,tablet
999,599,399

הפלט צריך להיות:

character(0)

רמזים:

  • השתמשו ב-strsplit(input, ",")[[1]] כדי לפצל מחרוזות המופרדות בפסיקים לווקטורים
  • השתמשו ב-as.numeric() כדי להמיר את מחרוזות המחירים למספרים
  • השתמשו ב-names(prices) <- item_names כדי ליצור וקטור בעל שמות
  • השתמשו באינדוקס לוגי עם names() כדי לחלץ את שמות הפריטים שאפשר להרשות לעצמכם

נסו בעצמכם

# קראו את הקלט
con <- file("stdin", "r")
budget <- as.numeric(suppressWarnings(readLines(con, n = 1)))
item_names_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# פענחו את נתוני הקלט
item_names <- strsplit(item_names_input, ",")[[1]]
price_values <- as.numeric(strsplit(prices_input, ",")[[1]])

# צרו וקטור מחירים בעל שמות
prices <- price_values
names(prices) <- item_names

# TODO: כתבו למטה את הפונקציה what_to_buy
# הפונקציה צריכה לקבל את budget ואת prices כארגומנטים
# ולהחזיר וקטור מחרוזות של שמות פריטים שאפשר לקנות במסגרת התקציב


# קראו לפונקציה והדפיסו את התוצאה
result <- what_to_buy(budget, prices)
print(result)

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

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