public static long solve(JaggedDungeon d)
    {
        int habitacion = 0;

        for (bool movoeste = true; movoeste == true;)
        {
            movoeste = d.GoThruDoor(Direction.WEST);
        }
        for (bool movnorte = true; movnorte == true;)
        {
            movnorte = d.GoThruDoor(Direction.NORTH);
        }

        bool movsur = true;

        do
        {
            for (bool moveste = true; moveste == true;)
            {
                moveste = d.GoThruDoor(Direction.EAST);
                if (moveste == true)
                {
                    habitacion += 1;
                }
            }
            habitacion += 1;
            for (bool movoeste = true; movoeste == true;)
            {
                movoeste = d.GoThruDoor(Direction.WEST);
                if (movoeste == false)
                {
                    movsur = d.GoThruDoor(Direction.SOUTH);
                }
            }
        } while (movsur == true);
        // TODO: implementar algoritmo para determinar la cantidad total de
        //       habitaciones existentes en el calabozo tipo jagged array
        // Valor: 4 puntos
        // Restriccion: la cantidad de movimientos de tu solucion no debe
        //              exceder 4 veces el de mi solucion; ver ejemplo en Main
        //              para comparar tus resultados contra los mios
        // NOTA: aunque el nombre del metodo, solve, es igual al de la version
        //       rectangular, C# logra distinguir ambas versiones por el tipo
        //       de parametro que recibe cada metodo.  Si te molesta, puedes
        //       renombrar estos metodos.

        // Ejemplo de interaccion:
        // d.GoThruDoor(Direction.SOUTH);

        return(habitacion);
    }
예제 #2
0
    public static long solve(JaggedDungeon d)
    {
        // TODO: implementar algoritmo para determinar la cantidad total de
        //       habitaciones existentes en el calabozo tipo jagged array
        // Valor: 4 puntos
        // Restriccion: la cantidad de movimientos de tu solucion no debe
        //              exceder 4 veces el de mi solucion; ver ejemplo en Main
        //              para comparar tus resultados contra los mios
        // NOTA: aunque el nombre del metodo, solve, es igual al de la version
        //       rectangular, C# logra distinguir ambas versiones por el tipo
        //       de parametro que recibe cada metodo.  Si te molesta, puedes
        //       renombrar estos metodos.

        // Ejemplo de interaccion:
        // d.GoThruDoor(Direction.SOUTH);
        int CountRows()
        {
            int tmp = 1;

            while (d.GoThruDoor(Direction.EAST))
            {
                ;
            }
            while (d.GoThruDoor(Direction.WEST))
            {
                tmp++;
            }
            return(tmp);
        }

        int Cols = 1;
        int Rows = 0;

        while (d.GoThruDoor(Direction.WEST))
        {
            ;
        }
        while (!d.GoThruDoor(Direction.NORTH) && !d.GoThruDoor(Direction.SOUTH))
        {
            d.GoThruDoor(Direction.WEST);
        }
        while (d.GoThruDoor(Direction.NORTH))
        {
            ;
        }
        Rows += CountRows();
        for (int i = 0; i < Cols; i++)
        {
            if (d.GoThruDoor(Direction.SOUTH))
            {
                Rows += CountRows();
                Cols++;
            }
        }
        return(Rows);
    }