"איבר קסם" הוא איבר בתור מספרים שערכו שווה לסכום הערכים של האיבר שלפניו והאיבר שאחריו; האיבר הראשון והאחרון בתור אינם יכולים להיות "איברי קסם" (אין להם שכן משני הצדדים). בשני הסעיפים אסור להשתמש במערך או ברשימה מקושרת — פתרון שמשתמש בהם לא יזוכה בנקודות; פותרים אך ורק עם פעולות התור (insert/remove/head/isEmpty). לדוגמה: התור (מראש לסוף) 5, 11, 6, 9, 3, 6, 3.
"איבר קסם" הוא איבר בתור מספרים שערכו שווה לסכום הערכים של האיבר שלפניו והאיבר שאחריו; האיבר הראשון והאחרון בתור אינם יכולים להיות "איברי קסם" (אין להם שכן משני הצדדים). בשני הסעיפים אסור להשתמש במערך או ברשימה מקושרת — פתרון שמשתמש בהם לא יזוכה בנקודות; פותרים אך ורק עם פעולות התור (insert/remove/head/isEmpty). לדוגמה: התור (מראש לסוף) 5, 11, 6, 9, 3, 6, 3.
התור שבדוגמה (מראש התור לסופו), המקומות 1 עד 7:

ראש התור → 5 | 11 | 6 | 9 | 3 | 6 | 3 ← סוף התור
מקום: 1 2 3 4 5 6 7
כתבו פעולה ששמה isMagic בשפת Java או IsMagic בשפת C#, המקבלת תור – q מטיפוס שלם, ומספר שלם – m הגדול מ-0 וקטן או שווה לגודל התור. הפעולה תחזיר true אם האיבר במקום ה-m בתור הוא "איבר קסם", אחרת היא תחזיר false. הערות: – בסיום הפעולה חובה לשמור על מבנה התור כפי שהתקבל. – אין להשתמש בסעיף זה במערך או ברשימה מקושרת. פתרון הכולל שימוש בהם לא יזוכה בנקודות. לדוגמה: עבור התור שלפניכם (מראש התור לסופו): 5, 11, 6, 9, 3, 6, 3 עבור m = 1 הפעולה תחזיר false (המספר הראשון בתור אינו "איבר קסם"). עבור m = 2 הפעולה תחזיר true (5 + 6 = 11). עבור m = 3 הפעולה תחזיר false (11 + 9 ≠ 6).
public static boolean isMagic (Queue<Integer> q, int m)
כתבו פעולה ששמה nMagic בשפת Java או NMagic בשפת C#, המקבלת תור מטיפוס שלם – q, ומספר שלם n הגדול מ-0 וקטן או שווה לגודל התור. הפעולה תחזיר true אם כל האיברים הנמצאים במקומות שהם כפולה של n (המקום ה-n בתור, המקום ה-2n בתור וכן הלאה בדילוגים של n מקומות) הם "איברי קסם". אחרת הפעולה תחזיר false. אפשר להשתמש בפעולה שכתבתם בסעיף א. הערות: – בפעולה זו אין צורך לשמור על התור שהתקבל. – אין להשתמש בסעיף זה במערך או ברשימה מקושרת. פתרון הכולל שימוש בהם לא יזוכה בנקודות. דוגמאות: עבור התור שבדוגמה שלעיל: עבור n = 2 הפעולה תחזיר true מכיוון שכל האיברים הנמצאים במקומות שהם כפולה של 2 (2, 4, 6) הם "איברי קסם". עבור n = 4 הפעולה תחזיר true מכיוון שהאיבר במקום ה-4 הוא "איבר קסם" (אין בתור איברים נוספים במקומות שהם כפולה של 4). עבור n = 3 הפעולה תחזיר false מכיוון שהאיבר במקום ה-3 אינו "איבר קסם".
public static boolean nMagic (Queue<Integer> q, int n)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.