Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/11/2013, 06:12
tanrax
 
Fecha de Ingreso: noviembre-2013
Mensajes: 3
Antigüedad: 11 años
Puntos: 0
Respuesta: Reto de programación

Cita:
Iniciado por Crazylegs Ver Mensaje
Podrías hacer un bucle que mirase las filas, las columnas y las diagonales. Dentro de cada bucle mirar si la posición contiene un 1, si es así guardas la posición de la matriz en un array auxiliar y sumas uno a un contador, sino contiene un 1 borras ese array auxiliar y pones el contador a 0. después de cada bucle compruebas que el contador sea 3 o mayor, si es así con el bucle auxiliar pones 0 donde toca.

No sé si me he explicado bien. Espero que te sirva de base.
Si es lo primero que intenté.

Código:
 /**
     * Metodo que quita las filas que coinciden
     */
    this.quitarLineas = function() {
        var aaTem = new Array();
        var iCont = 0;
        //Busca en horizontal
        for (var i = 0; i < this.iLogTab; i++) {
            for (var j = 0; j < this.iLogTab - 1; j++) {
                if(this.aaTablero[i][j] != 0 
                    && this.aaTablero[i][j + 1] != 0
                    && this.aaTablero[i][j] == this.aaTablero[i][j + 1]) {
                    aaTem[aaTem.length] = new Array(i, j);
                    iCont++;
                } else if(iCont >= this.iNumLineas && j != 0) {
                    aaTem[aaTem.length] = new Array(i, j);
                    iCont = 0;
                    for (var k = 0; k < aaTem.length; k++) {
                            this.aaTablero[aaTem[k][0]][aaTem[k][1]] = 0;
                            console.log('Ehhh ' + aaTem[k][0] + ' ' + aaTem[k][1]);
                    }
                    aaTem = new Array();
                } else {
                    iCont = 0;
                    aaTem = new Array();
                }
            }
        }
    }
Pero ni funciona ni sirve para las diagonales

Gracias de todos modos.