הגירסה הסופית של הקוד שהוצג בשיעור נמצאת בתיקיית הקוד, בקובץ בשם:
50-flyweight.py
כתבו מערכת דומה עבור בעיה אלגוריתמית אחרת - בעיית העץ הפורש המינימלי. המערכת שלכם צריכה לטפל באופן יעיל, ובלי שיכפול קוד, ב:
- שני סוגי קלט (לדוגמה: רשימת שכנויות של הגרף, או מטריצת משקלים).
- שני סוגי פלט (לדוגמה: גודל העץ הפורש, או רשימת הקשתות בעץ הפורש, או ייצוג העץ כגרף).
- שני אלגוריתמים שונים לפתרון הבעיה (לדוגמה: אלגוריתם Kruskal, אלגוריתם Prim, אלגוריתם אחר כלשהו).
הנחיות:
- השתמשו בדגמי-העיצוב שנלמדו בשיעור.
- בדקו והדגימו את המערכת שלכם על כל 8 הצירופים (2 סוגי קלט, 2 סוגי פלט, 2 אלגוריתמים).
- כתבו תיעוד ברור המסביר את הארכיטקטורה של המערכת, את דגמי העיצוב בהם השתמשתם, ואת ההחלטות התכנוניות שקיבלתם.
דגשים:
- יש לזהות את סוג הקלט באופן אוטומטי - לא ע"י פרמטר נוסף.
- יש להשתמש בסוג הפלט הדרוש כדי לחסוך בזמן הריצה לפי הצורך (לדוגמה, לא לחשב את כל העץ אם הפלט כולל רק את גודל העץ).
- יש לכתוב קוד כללי, שניתן להרחבה בקלות גם לסוגי קלט/פלט/אלגוריתמים נוספים (לא ע"י משפטי תנאי).