חיתוך מערכים באמצעות אינדקסים
חלק מהיחידה יסודות במסלול ה-Ruby של Coddy. שיעור 70 מתוך 88.
Ruby מציעה דרך נוספת לחתוך מערכים באמצעות אינדקס התחלה ואורך. במקום לציין טווח, מספקים שני מספרים: היכן להתחיל וכמה איברים לחלץ.
התחביר משתמש בפסיק כדי להפריד בין אינדקס ההתחלה למספר הפריטים:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1, 3]
puts slice # פלט: 20, 30, 40כך נשלפים 3 איברים החל מאינדקס 1. המספר הראשון הוא מיקום ההתחלה, והשני מציין כמה איברים רוצים.
הגישה הזו שימושית במיוחד כשידוע לך בדיוק כמה איברים אתה צריך:
letters = ["a", "b", "c", "d", "e"]
first_two = letters[0, 2]
puts first_two # פלט: a, bגם כאן אינדקסים שליליים עובדים. אפשר להתחיל מסוף המערך:
colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]
puts last_two # פלט: blue, yellowאם תבקש יותר איברים מאלה שזמינים, Ruby פשוט תחזיר את מה שקיים בלי להעלות שגיאה:
nums = [1, 2, 3]
slice = nums[1, 10]
puts slice # פלט: 2, 3בחרו בשיטה הזאת כשידוע לכם מספר האיברים הנדרש, והשתמשו בטווחים כשידוע לכם המיקומים המדויקים.
אתגר
קלקראו שלוש קלטים:
- שורה אחת של מספרים שלמים המופרדים בפסיקים (לדוגמה,
5,10,15,20,25,30,35,40) - אינדקס התחלתי (מספר שלם)
- מספר האיברים שיש לחלץ (מספר שלם)
פצלו את הקלט הראשון למערך של מספרים שלמים. השתמשו באינדקס ההתחלתי ובמספר האיברים כדי לחתוך את המערך באמצעות תחביר אינדקס ואורך, ולאחר מכן הדפיסו כל איבר מהחלק שנחתך בשורה נפרדת.
לדוגמה, אם הקלטים הם 5,10,15,20,25,30,35,40, 2 ו-4, הפלט צריך להיות:
15
20
25
30אם הקלטים הם 100,200,300,400,500, 0 ו-2, הפלט צריך להיות:
100
200אם הקלטים הם a,b,c,d,e,f,g, -3 ו-2, הפלט צריך להיות:
e
fאם הקלטים הם 10,20,30, 1 ו-10, הפלט צריך להיות:
20
30נסו בעצמכם
# קראו את הקלטים
input_line = gets.chomp
start_index = gets.chomp.to_i
count = gets.chomp.to_i
# פצלו את הקלט למערך
arr = input_line.split(',')
# TODO: כתבו את הקוד שלכם למטה כדי לחתוך את המערך באמצעות תחביר של אינדקס ואורך
# והדפיסו כל איבר בשורה נפרדתהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 2
אופרטורים לוגיים חלק 1אופרטורים לוגיים חלק 2חזרה – לוגיקה פשוטהאופרטורים לוגיים חלק 3אופרטורים לוגיים חלק 413מערכים מתקדמים
חיתוך מערכים באמצעות טווחיםחיתוך מערכים באמצעות אינדקסיםאופרטורים של מערכיםמתודת Include?2משתנים וטיפוסי נתונים
מספרים ומשתניםטיפוס הנתונים מחרוזתטיפוס הנתונים בוליאניטיפוס הנתונים Symbolבדיקת טיפוסי נתוניםמוסכמות שמותסיכום – יצירת משתנים8לולאות
לולאת for עם טווחיםלולאת whilebreaknextסיכום – עצרתלולאת timesלולאת untilלולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםאופרטור מודולוקיצורי דרך אריתמטייםסיכום – חשבון פשוטאופרטורי השוואה6קלט ופלט בסיסיים
פלט באמצעות putsפלט באמצעות print ו־pפלט באמצעות משתניםקלט באמצעות getsשיטת Chompהמרת טיפוסיםחזרה — מחשבון גילחזרה — אמת או שקר9מתודות
הגדרת מתודהפרמטרים של מתודהערכי החזרהסיכום - מתודת Sigmaסיכום - מתודת האימותערכי ברירת מחדל של פרמטרים15מעקב אחר הוצאות יומיות
סקירת הפרויקטיציאה מהתוכניתתרגלו בעצמכם: קומפיילר Ruby אונליין