שאלה 4 סעיף א פתרון בשפת Java
public static boolean isMagic (Queue<Integer> q , int m)
{
if ( m==1 )
return false;
Queue<Integer> temp = new Queue<Integer>();
int before=0;
int middle=0;
int after = 0;
boolean result = true;
for( int i=0; i< m-1 ; i++)
{
before = q.remove();
temp.insert(before);
}
middle= q.remove();
temp.insert(middle);
if( q.isEmpty())
result = false;
else
{
after= q.remove();
temp.insert(after);
}
/*
ריקון התור q לתוך temp
*/
while(!q.isEmpty())
temp.insert(q.remove());
/*
ריקון התור temp לתוך q
*/
while(!temp.isEmpty())
q.insert(temp.remove());
return result && middle == after+before;
}
שאלה 4 סעיף א פתרון בשפת C#
public static bool IsMagic (Queue<int> q , int m)
{
if ( m==1 )
return false;
Queue<int> temp = new Queue<int>();
int before=0; // m-1
int middle=0; // m
int after = 0; // m+1
bool result = true;
for( int i=0; i< m-1 ; i++)
{
before = q.Remove();
temp.Insert(before);
}
middle= q.Remove();
temp.Insert(middle);
if( q.IsEmpty())
result = false;
else
{
after= q.Remove();
temp.Insert(After);
}
/*
ריקון התור q לתוך temp
*/
while(!q.IsEmpty())
temp.Insert(q.Remove());
/*
ריקון התור temp לתוך q
*/
while(!temp.IsEmpty())
q.Insert(temp.Remove());
return result && middle == after+before;
}
שאלה 4 סעיף ב פתרון בשפת java
נבנה פעולת עזר אשר משכפלת את התור (כתוב בשפת java):
נבנה פעולת עזר אשר מחזירה את אורך התור בשפת java:
public static int size(Queue<Integer> q)
{
Queue<Integer> temp = new Queue<Integer>();
int counter=0;
while ( ! q.IsEmpty())
{
temp.insert(q.remove());
counter++;
}
while ( ! temp.isEmpty())
q.insert(temp.remove());
return counter;
}
public static boolean nMagic (Queue<Integer> q , int n)
{
int size = size(q);
for(int i=n; i < size / n ; i+=n)
{
if( !isMagic(q , i))
return false;
}
return true;
}