חיתוך מערכים באמצעות טווחים
חלק מהיחידה יסודות במסלול ה-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 ועד לאיבר האחרון, וזה שימושי כשרוצים לדלג על האיבר הראשון בלי לדעת מהו אורך המערך.
אתגר
קלקרא שתי קלטים:
- שורה אחת של מספרים שלמים המופרדים בפסיקים (למשל,
10,20,30,40,50,60,70) - ציון טווח בפורמט
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. הדפיסו כל איבר מהחלק שנבחר בשורה נפרדתהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
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 אונליין