שאלה 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;

}