Menu
CoddyTech

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

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