Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/11/2013, 04:28
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Reto de programación

Hazlo por fuerza bruta, y cuando consigas que funcione, intenta refinarlo para eliminar comprobaciones absurdas y reducir bucles.

Por fuerza bruta consiste en un bucle anidado (dos FOR) que recorra todas las celdas de tu array bidimensional.

Cuando tengas la celda, ejecutarás un bucle mas, que irá de 0 a 2 (para comprobar si hay 3 en línea). Dicho índice se lo incrementarás a por ejemplo la columna, para comprobar si hay 3 casillas seguidas en la misma fila con el valor 1. Ten cuidado de no sobrepasar el tamaño máximo del array. Si encuentras tres seguidas, vuelve a ejecutar el mismo for pero esta vez poniendo las casillas a cero.

Luego haces lo mismo con las columnas, incrementando esta vez al fila.
Y despues lo mismo para diagonals, incrementando fila y columna. Y por último, para la diagonal inversa, incrementando la columnay restando a la fila.

En pseudo codigo

Código Javascript:
Ver original
  1. for (fila=0;fila<7;fila++)
  2. {
  3.     for(columna=0;columna<7;columna++)
  4.     {
  5.         //Bucle para comprobar filas
  6.         aciertos=0;
  7.         for (casilla=0;casilla<2 || columna+casilla<7;casilla++)
  8.        {
  9.             if tablero[fila,columna+casilla]==1  aciertos++;
  10.        }
  11.        if aciertos==3
  12.       {
  13.             for (casilla=0;casilla<2;casilla++)
  14.             {
  15.                  tablero[fila,columna+casilla]==0;
  16.              }
  17.       }
  18.       aciertos=0;
  19.       //Bucle para columnas, curratelo
  20.       //Bucle para diagonal izquierda-derecha, curratelo
  21.       //Bucle para diagonal derecha-izquierda, curratelo
  22.     }
  23. }