Menu
Coddy logo textTech

חיתוך מערכים באמצעות טווחים

חלק מהיחידה יסודות במסלול ה-Ruby של Coddy. שיעור 69 מתוך 88.

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

כדי לחתוך מערך באמצעות טווח, הצב את הטווח בתוך סוגריים מרובעים:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]

puts slice  # פלט: 20, 30, 40

הטווח 1..3 כולל איברים באינדקסים 1, 2 ו-3. זכור שהאינדקסים של מערך מתחילים ב-0, לכן אינדקס 1 הוא האיבר השני.

אפשר להשתמש גם בטווח של שלוש נקודות (...) כדי לא לכלול את האינדקס האחרון:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]

puts slice  # פלט: a, b, c

כאן, 0...3 כולל את האינדקסים 0, 1 ו־2, אך נעצר לפני האינדקס 3.

אינדקסים שליליים עובדים גם עם טווחים. הם נספרים מסוף המערך, כאשר -1 הוא האיבר האחרון:

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]

puts slice  # פלט: green, blue, yellow

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

challenge icon

אתגר

קל

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

  1. שורה אחת של מספרים שלמים המופרדים בפסיקים (לדוגמה, 10,20,30,40,50,60,70)
  2. ציון טווח בפורמט start..end או start...end (לדוגמה, 2..5 או 1...4)

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

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

לדוגמה, אם הקלטים הם 10,20,30,40,50,60,70 ו-2..5, הפלט אמור להיות:

30
40
50
60

אם הקלטים הם 5,10,15,20,25,30 ו-0...3, הפלט אמור להיות:

5
10
15

אם הקלטים הם 100,200,300,400,500 ו-1..-1, הפלט אמור להיות:

200
300
400
500

אם הקלטים הם a,b,c,d,e,f ו--3..-1, הפלט אמור להיות:

d
e
f

נסו בעצמכם

# קראו את הערכים המופרדים בפסיקים
input_values = gets.chomp

# קראו את הגדרת הטווח
range_spec = gets.chomp

# TODO: כתבו את הקוד שלכם למטה
# 1. פצלו את input_values למערך
# 2. נתחו את range_spec כדי לקבוע את ההתחלה, הסוף, והאם להשתמש ב-.. או ב-...
# 3. חתכו את המערך באמצעות הטווח המתאים
# 4. הדפיסו כל איבר מהחלק שנחתך בשורה נפרדת
quiz iconבחנו את עצמכם

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

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

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