סעיף א
נתונה הפעולה Secret הבאה המקבלת שתי מחרוזות:
public static bool Secret(string s1, string s2)
{
if(s1.Equals(s2)) return false;
while(s1.Length != 0 && s2.Length != 0)
{
int pos = s2.IndexOf(s1[0]);
if(pos == -1) return false;
s1 = s1.Substring(1);
s2 = s2.Substring(0,pos) + s2.Substring(pos+1);
}
return s1.Length == 0;
}
- תנו דוגמה למחרוזת s2 באורך של שישה תווים שעבורה הפעולה Secret("HELLO!", s2) תחזיר ערך true.
- נתונה הטענה הבאה: אם זימון הפעולה Secret(s1, s2) מחזיר ערך true, גם זימון הפעולה Secret(s2, s1) יחזיר ערך true. האם הטענה נכונה? הסבירו את תשובתכם.
- מה מבצעת הפעולה Secret באופן כללי?
סעיף ב
נתונה הפעולה Mystery המקבלת מערך מחרוזות. הפעולה משתמשת בפעולה Secret:
public static bool Mystery(string[] arr)
{
for (int i = 0; i<arr.Length -1; i+=2)
{
if (!Secret(arr[i], arr[i+1]))
return false;
}
return true;
}
- תנו דוגמה למערך arr בגודל שישה תאים שעבורו הפעולה Mystery תחזיר ערך true.
- נתונה הטענה הבאה: אם זימון הפעולה Mystery(arr) מחזיר ערך true, המערך arr לא כולל זוג מחרוזות זהות אשר נמצאות בתאים סמוכים. האם הטענה נכונה? הסבירו את תשובתכם.
- מהי הסיבוכיות של הפעולה Mystery? הסבירו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.