anchor.diff:      }
       if(this.outOfBounds(x-1,y) == false && grid.getElement(x, y) >= grid.getElement(x-1, y)) //arriba
       {
  -      this.factor(1, 0, first);
  +      this.factor(-1, 0, x, y, first, breakZigZag);
  +      auxZigZag = (this.factor(1, 0, x, y, false, breakZigZag) == 1);
         grid.setElement(x, y, max);
  -      auxList = this.maxDecrecimientosList(grid,x-1,y,false,1,0);
  +      auxList = this.maxDecrecimientosList(grid,x-1,y,false,-1,0,auxZigZag);
         count.add(auxList[0]+1);
  -      addedcount.add(auxList[1]+aux*this.factor(direcX, direcY, false));
  +      addedcount.add(auxList[1]+aux*this.factor(1, 0, x, y, false, breakZigZag));
         grid.setElement(x, y, aux);
         if(grid.getElement(x, y) == grid.getElement(x-1, y))
         {
  
positive.code:     moveGrid.simulateMoveLeft();
      if(isInList(prevMoves, amountMoves, Move.right) == false && moveGrid.compareGrid(testGrid) != 0)
      {
        aux = this.maxDecrecimientosList(moveGrid,punto[0],punto[1],true,0,0);
        decrecimientos.add(aux[1]);
        moveList.add(Move.left);
        depthList.add(depth);
  
negative.code:     int elements = 0; 
      List<int> returnList = new List<int>();
      List<int> auxList;
      bool auxZigZag;
      
      if(aux == 0) //dejar de contar si nos encontramos un cero
      {
  