תרגול מטריצות מתקדם
1. א. כתבי פעולה בשם IsMagicSquare המקבלת מטריצה ריבועית (int[,] matrix) ותחזיר האם היא ריבוע קסם.
ריבוע קסם הוא מטריצה ריבועית שמקיימת את התנאים הבאים:
● סכום כל שורה שווה.
● סכום כל עמודה שווה.
● סכום האלכסון הראשי שווה.
● סכום האלכסון המשני שווה.
וכל הסכומים הללו שווים זה לזה.
ב. מהי סיבוכיות הפעולה שכתבת בסעיף א'?
2. א. כתבי פעולה בשם IsSymmetricMatrix שמקבלת מטריצה ריבועית של תווים (char[,] matrix), ובודקת ומחזירה האם המטריצה נראית זהה מכל כיוון – לדו':
מטריצה סימטרית: (הפעולה תחזיר true)
A B A
B C B
A B Aמטריצה לא סימטרית: (הפעולה תחזיר false)
A B C
B C B
C B Aב. מה סיבוכיות הפעולה שכתבת בסעיף א'?
3. א. כתבי פעולה בשם IsWordInPuzzle המקבלת מטריצה של תווים (char[,] puzzle) ומילה (string word), ובודקת האם המילה מופיעה בתפזורת. הפעולה תחזיר true אם המילה מופיעה במטריצה במאונך, במאוזן, ישר או הפוך.
הגדרה: המילה יכולה להופיע גם מהכיוון הרגיל וגם בכיוון ההפוך
ב. כתבי פעולה בשם AreAllWordsInPuzzle שמקבלת מטריצה של תווים (char[,] puzzle) ומערך מילים (string[] words), ומחזירה true אם כל המילים במערך מופיעות בתפזורת.
הפעולה תשתמש בפעולה שכתבת בסעיף א כדי לבדוק כל מילה במערך.
ג. נתחי את סיבוכיות הזמן של הפעולה AreAllWordsInPuzzle