נתונות המחלקות Cube (size, type) ו-Box (מערך cubes בגודל 3 + count; הבנאי ו-add/Add נתונים). יש לממש isPerfect הבודקת אם קופסה מכילה 3 קוביות מאותו סוג וגודל, ואז לארוז קוביות מתור לקופסאות לפי סדר הגעתן (packBox, packAll).
נתונות המחלקות Cube (size, type) ו-Box (מערך cubes בגודל 3 + count; הבנאי ו-add/Add נתונים). יש לממש isPerfect הבודקת אם קופסה מכילה 3 קוביות מאותו סוג וגודל, ואז לארוז קוביות מתור לקופסאות לפי סדר הגעתן (packBox, packAll).
דוגמה לתור q (ראש..סוף) לסעיף ב
head: Cube(1,'a'), Cube(2,'a'), Cube(2,'b'), Cube(1,'a'), Cube(1,'a'), Cube(1,'a'), Cube(3,'b'), Cube(3,'a') :tail
packBox(q) result + queue state after, per example
Box returned: count=2, cubes=[Cube(1,'a'),Cube(2,'a'),null]; queue after: Cube(2,'b'),Cube(1,'a'),Cube(1,'a'),Cube(1,'a'),Cube(3,'b'),Cube(3,'a')
packAll(q) result for the full original queue -- 4 boxes, prints 'perfect'
Box1{cubes=[1a,2a,null],count=2} Box2{cubes=[2b,null,null],count=1} Box3{cubes=[1a,1a,1a],count=3} Box4{cubes=[3b,3a,null],count=2} -- Box3 is 'perfect'
קופסה נקראת "מושלמת" אם יש בה 3 קוביות מאותו הסוג וגם מאותו הגודל. ממשו את הפעולה הפנימית שלפניכם במחלקה Box, המחזירה true אם הקופסה מושלמת, אחרת false.
public bool IsPerfect ()
במפעל צעצועים אורזים קוביות לקופסאות לפי סדר הגעתן. ממשו את הפעולה החיצונית שלפניכם: מקבלת תור של קוביות ומחזירה עצם מסוג Box. הפעולה תכניס קוביות מהתור (לפי סדר הופעתן) לקופסה, כל עוד פעולת ההכנסה אפשרית (לפי add/Add). אם לא ניתן להכניס את הקובייה הבאה בתור, הפעולה תעצור ותחזיר את הקופסה שנוצרה. הערה: בסיום הפעולה סדר הקוביות בתור המקורי נשמר, ללא הקוביות שהוכנסו לקופסה.
public static Box PackBox (Queue<Cube> q)
כתבו פעולה חיצונית בשם packAll בשפת Java או PackAll בשפת C# המקבלת תור q של עצמים מסוג Cube. הפעולה: תחזיר תור מסוג Box לאחר הכנסת כל הקוביות לקופסאות לפי הכללים לעיל; תדפיס perfect לאחר הכנסת כל הקוביות לקופסאות, אם קיימת לפחות קופסה אחת "מושלמת", אחרת תדפיס not perfect.
public static Queue<Box> PackAll (Queue<Cube> q)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.