int validMove(const char board[7][7], char direccion, int x,int y){
switch (direccion){
case 'N':
if(y>1 && board[y-1][x]=='1' && board[y-2][x]=='1')
return 1;
break;
case 'S':
if(y<5 && board[y+1][x]=='1' && board[y+2][x]=='1')
return 1;
break;
case 'O':
if(x>1 && board[y][x-1]=='1' && board[y][x-2]=='1')
return 1;
break;
case 'E':
if(x<5 && board[y][x+1]=='1' && board[y][x+2]=='1')
return 1;
break;
default:
printf("Mal llamada de la funcion");
}
}
int findMoves(char** moves,const char board[7][7]){
int i,j;
int n=0;
for(i=0;i<7;++i){
for(j=0;j<7;++j){
if(board[i][j]=='0'){
if(validMove(board,'N',j,i)){
++n;
moves = realloc(moves,n*sizeof(char*));
moves[n-1] = malloc(6*sizeof(char));
sprintf(moves[n-1],"%i-%i",(i-2)*10+j,i*10+j);
}
if(validMove(board,'S',j,i)){
++n;
moves = realloc(moves,n*sizeof(char*));
moves[n-1] = malloc(6*sizeof(char));
sprintf(moves[n-1],"%i-%i",(i+2)*10+j,i*10+j);
}
if(validMove(board,'E',j,i)){
++n;
moves = realloc(moves,n*sizeof(char*));
moves[n-1] = malloc(6*sizeof(char));
sprintf(moves[n-1],"%i-%i",i*10+j+2,i*10+j);
}
if(validMove(board,'O',j,i)){
++n;
moves = realloc(moves,n*sizeof(char*));
moves[n-1] = malloc(6*sizeof(char));
sprintf(moves[n-1],"%i-%i",i*10+j-2,i*10+j);
}
}
}
}
return n;
}