Пример #1
0
        public static int algoritmoIterativo(int n, Pila ini, Pila fin, Pila aux)
        {
            int  m          = 0;
            bool gameStatus = false;

            while (!gameStatus)
            {
                // Si n es impar
                if (n % 2 != 0)
                {
                    mover_disco(ini, fin);
                    m++;
                    gameStatus = ini.winCheck(n);
                    gameStatus = fin.winCheck(n);
                    if (!gameStatus)
                    {
                        mover_disco(ini, aux);
                        m++;
                        gameStatus = ini.winCheck(n);
                        gameStatus = aux.winCheck(n);
                    }
                    if (!gameStatus)
                    {
                        mover_disco(aux, fin);
                        m++;
                        gameStatus = aux.winCheck(n);
                        gameStatus = fin.winCheck(n);
                    }
                }
                else
                {
                    mover_disco(ini, aux);
                    m++;
                    gameStatus = ini.winCheck(n);
                    gameStatus = aux.winCheck(n);
                    if (!gameStatus)
                    {
                        mover_disco(ini, fin);
                        m++;
                        gameStatus = ini.winCheck(n);
                        gameStatus = fin.winCheck(n);
                    }
                    if (!gameStatus)
                    {
                        mover_disco(aux, fin);
                        m++;
                        gameStatus = aux.winCheck(n);
                        gameStatus = fin.winCheck(n);
                    }
                }
            }
            // cuantos son los movimientos minimos para resolver 2^(n-1); 7 si son 3 discos
            // entregar practica pronto
            // lanzar en terminal
            return(m);
        }