"סריקה לפי ערכי התאים" היא סריקה שמתחילה באינדקס 0, ועוברת מאינדקס לאינדקס אחר שמספרו שווה לערך השמור באותו אינדקס, וממשיכה כך הלאה. אם הסריקה מגיעה לתא שערכו 0, היא מסתיימת. הניחו שערכי התאים אינם חורגים מגבולות המערך.
"סריקה לפי ערכי התאים" היא סריקה שמתחילה באינדקס 0, ועוברת מאינדקס לאינדקס אחר שמספרו שווה לערך השמור באותו אינדקס, וממשיכה כך הלאה. אם הסריקה מגיעה לתא שערכו 0, היא מסתיימת. הניחו שערכי התאים אינם חורגים מגבולות המערך.
מערך מושלם לפי "סריקה לפי ערכי התאים" הוא מערך שבו: (1) כל התאים של המערך נסרקים; וגם (2) הסריקה מסתיימת (מפני שבמערך יש תא שערכו 0 והסריקה מגיעה אליו).
דוגמאות: arr=[2,2,3,2,0] — סדר האינדקסים בסריקה הוא 0,2,3,2,3,... (אינו מסתיים, לא מגיע לתא ערך 0). arr=[3,0,1,4,2] — סדר האינדקסים 0,3,4,2,1 — כל 5 התאים נסרקים והסריקה מסתיימת בתא ערך 0 — מערך מושלם. arr=[1,2,5,1,3,4] — הסריקה חוזרת על תאים בלי להגיע לתא ערך 0 — אינו מושלם, כי הסריקה אינה מסתיימת. arr=[3,4,1,5,6,0,2] — הסריקה מסתיימת (0 באינדקס 5) אך רק לאחר סריקת 3 תאים בלבד — אינו מושלם, כי לא כל התאים נסרקו.
ממשו את הפעולה isPerfect/IsPerfect. הפעולה תקבל מערך שלמים arr ותחזיר true אם הוא "מערך מושלם" לפי "סריקה לפי ערכי התאים" (כל התאים נסרקים והסריקה מסתיימת בתא שערכו 0), אחרת false. הניחו שערכי התאים אינם חורגים מגבולות המערך.
public static bool IsPerfect(int[] arr)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.