Beispiel #1
0
        public ActionResult pares()
        {
            //metemos variables
            var num1 = Request["text1"];
            var num2 = Request["text2"];
            //creamos lista
            List <int> milista2 = new List <int>();
            //creamos objeto primos
            pares mispares = new pares();
            int   from, until;

            if ((int.TryParse(num1, out from)) && (int.TryParse(num2, out until)))
            {
                milista2 = mispares.CalculaPar(from, until);
            }
            //retornar la lista
            return(View(milista2));
        }
Beispiel #2
0
        public static void DescubreAdyacentes(Tablero tab, int x, int y)
        {
            pares[] pendientes = new pares[tab.cas.GetLength(1) * tab.cas.GetLength(0)];
            int     act        = 0;          //referencia que indica la casilla que estamos explorando
            int     sigLibre   = 1;          //Indica la siguiente posición libre del array

            pendientes[0].x = x;
            pendientes[0].y = y;

            //Exploramos todo el array de pendientes
            while (act < sigLibre)
            {
                //Comprobamos que esa casilla esta cubierta y no es una mina
                if (tab.cas[pendientes[act].y, pendientes[act].x].estado == 'o')
                {
                    //Asignamos el número de minas que la rodean al estado de la casilla
                    tab.cas[pendientes[act].y, pendientes[act].x].estado = MinasAlRededor(tab, pendientes[act].x, pendientes[act].y);

                    //Si no hay minas al rededor de esa casilla, añadimos las casillas adyacentes a pendientes
                    if (tab.cas[pendientes[act].y, pendientes[act].x].estado == '0')
                    {
                        for (int j = Math.Max(0, pendientes[act].y - 1); j <= Math.Min(pendientes[act].y + 1, tab.cas.GetLength(0) - 1); j++)
                        {
                            for (int i = Math.Max(0, pendientes[act].x - 1); i <= Math.Min(pendientes[act].x + 1, tab.cas.GetLength(1) - 1); i++)
                            {
                                //Si la casilla no está en el array la añadimos
                                if (!EstaEnPendientes(pendientes, i, j, sigLibre))
                                {
                                    pendientes[sigLibre].x = i;
                                    pendientes[sigLibre].y = j;

                                    sigLibre++;
                                }
                            }
                        }
                    }
                }

                act++;
            }
        }