מסלולים ברשת
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-R של Coddy. שיעור 64 מתוך 64.
אתגר
קשההשלם את count_paths(grid). grid היא מטריצה של 0 (תאים פתוחים) ו־1 (קירות). מסלול מתחיל בתא השמאלי העליון, מסתיים בתא הימני התחתון, נע רק ימינה או למטה, ולעולם אינו נכנס לקיר. החזר שתי שורות: Paths: עם מספר המסלולים השונים, ו־Steps: עם מספר הצעדים בכל מסלול (לכל המסלולים אותו אורך), או Steps: none כשאין מסלול.
בנה מטריצה ways באותו גודל, שבה כל תא מכיל את מספר המסלולים שמגיעים אליו: תא פתוח מקבל את סכום הערכים בתא שמעליו ובתא שמשמאלו, וקיר מקבל 0.
הקוד שסופק קורא את המטריצה משורה אחת: השורות מופרדות באמצעות ; והערכים בכל שורה באמצעות ,. הוא מדפיס כל שורה שהוחזרה.
נסו בעצמכם
count_paths <- function(grid) {
# כתבו כאן את הקוד שלכם
c("Paths: 0", "Steps: none")
}
# קוד קלט/פלט שסופק: השאירו אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
rows <- strsplit(input[1], ";")[[1]]
grid <- matrix(as.numeric(unlist(strsplit(rows, ","))), nrow = length(rows), byrow = TRUE)
cat(count_paths(grid), sep = "\n")
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
תת־מחרוזות עם substr()עיצוב עם sprintf()פיצול וחיבורחיפוש במחרוזותהחלפת טקסטסיכום – בונה שמות משתמש4מטריצות
יצירת מטריצותאינדוקס מטריצותסיכומי שורות ועמודותאריתמטיקה של מטריצותסיכום – תרשים מקומות ישיבהתרגלו בעצמכם: קומפיילר R אונליין