Menu
CoddyTech

חיתוך מערכים באמצעות אינדקסים

חלק מהיחידה יסודות במסלול ה-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

בחרו בשיטה הזאת כשידוע לכם מספר האיברים הנדרש, והשתמשו בטווחים כשידוע לכם המיקומים המדויקים.

challenge icon

אתגר

קל

קראו שלוש קלטים:

  1. שורה אחת של מספרים שלמים המופרדים בפסיקים (לדוגמה, 5,10,15,20,25,30,35,40)
  2. אינדקס התחלתי (מספר שלם)
  3. מספר האיברים שיש לחלץ (מספר שלם)

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

לדוגמה, אם הקלטים הם 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: כתבו את הקוד שלכם למטה כדי לחתוך את המערך באמצעות תחביר של אינדקס ואורך
# והדפיסו כל איבר בשורה נפרדת
quiz iconבחנו את עצמכם

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

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

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