חיתוך מערכים באמצעות אינדקסים
חלק מהיחידה יסודות במסלול ה-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 אונליין