הפרש קבוצות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 35 מתוך 78.
ההפרש בין שתי קבוצות מכיל את האיברים של הקבוצה הראשונה שאינם בקבוצה השנייה. בצע לולאה על הקבוצה הראשונה והשאר את מה שחסר בקבוצה השנייה:
var needed := {"rope": true, "torch": true, "map": true}
var packed := {"torch": true, "apple": true}
var missing := {}
for item in needed:
if not packed.has(item):
missing[item] = true
print(missing.keys()) # ["rope", "map"]לסדר הקבוצות יש חשיבות. ההפרש בין packed ל־needed הוא ["apple"]: מה שארזת אך לא היית צריך.
שני ההבדלים יחד יוצרים את ההפרש הסימטרי: האיברים שנמצאים בדיוק באחת מהקבוצות. כאן אלה rope, map ו־apple.
כדי לבדוק ששום דבר לא חסר, has_all() מקבלת מערך ומחזירה true כאשר כל אחד מהאיברים בו הוא מפתח במילון:
print(packed.has_all(needed.keys())) # false: החבל והמפה חסריםאתגר
קללפני נסיעה, משווים בין מה שצריך לבין מה שארזתם. התוכנית קוראת שתי שורות, את הפריטים הדרושים ואת הפריטים שנארזו, כשהם מופרדים ברווחים, וקוד הפתיחה בונה את הקבוצות needed ו-packed.
הדפיסו שתי שורות, כשהאיברים מופרדים באמצעות , :
Missing:ואחריו הפריטים הדרושים שלא נארזוExtra:ואחריו הפריטים שנארזו ואינם נחוצים
שמרו על הסדר של הקבוצה שעליה עוברים בלולאה. הדפיסו none במקום רשימה ריקה. עבור הקלט:
rope torch map
torch appleהפלט הוא:
Missing: rope, map
Extra: appleנסו בעצמכם
extends Node
func _ready():
var needed := {}
for item in OS.read_string_from_stdin().split(" ", false):
needed[item] = true
var packed := {}
for item in OS.read_string_from_stdin().split(" ", false):
packed[item] = true
# בנו את שתי קבוצות ההפרש
# הדפיסו את התוצאות
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמידתרגלו בעצמכם: קומפיילר GDScript אונליין