Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define N 4
- char diccionario[100][4];
- int mov[8][2];
- int count;
- void pigewu(char tablero[N][N], int x, int y, int letras[],char palabra[]);
- int isValid(char tablero[N][N], int x, int y, int i, int letras[]);
- int esVocal(char tablero[N][N], int newx, int newy);
- void printArray(char diccionario[100][4], int count);
- void add(char palabra[], int count);
- int main(){
- mov[0][0] = 0; //derecha
- mov[0][1] = 1;
- mov[1][0] = 1; //derecha abajo
- mov[1][1] = 1;
- mov[2][0] = 1; //abajo
- mov[2][1] = 0;
- mov[3][0] = -1; //izquierda abajo
- mov[3][1] = 1;
- mov[4][0] = 0; //izquierda
- mov[4][1] = -1;
- mov[5][0] = -1; //izquierd arriba
- mov[5][1] = -1;
- mov[6][0] = -1; // arriba
- mov[6][1] = 0;
- mov[7][0] = -1; // arriba derecha
- mov[7][1] = 1;
- int letras[2] = {0};
- int palabrasT = 0;
- char palabra[4];
- char tablero[N][N] = {{'A','S','S','D'},{'S','B','E','Y'},{'G','F','O','I'},{'H','U','U','K'}};
- int i=0,j=0;
- for(i=0; i<N; i++){
- for(j=0; j<N; j++){
- if(esVocal(tablero,i,j))
- letras[0]++;
- else
- letras[1]++;
- palabra[0] = tablero[i][j];
- pigewu(tablero,i,j,letras,palabra);
- palabrasT += count;
- }
- }
- printArray(diccionario,count);
- return 0;
- }
- void pigewu(char tablero[N][N], int x, int y, int letras[], char palabra[]){
- if(letras[0] + letras[1] == 4){
- if(!pertenece(palabra)){
- count++;
- add(palabra,count);
- printArray(diccionario,count);
- }
- return ;
- }
- int i;
- int newletras[2],newx,newy;
- char newpalabra[4];
- strcpy(newpalabra,palabra);
- newletras[0] = letras[0];
- newletras[1] = letras[1];
- for(i=0; i<8; i++){
- if(isValid(tablero,x,y,i,letras)){
- newx = x + mov[i][0];
- newy = y + mov[i][1];
- if(esVocal(tablero,newx,newy))
- newletras[0] = letras[0] + 1;
- else
- newletras[1] = letras[1] + 1;
- newpalabra[newletras[0]+newletras[1]-1] = tablero[newx][newy];
- pigewu(tablero,newx,newy,newletras,newpalabra);
- }
- }
- return ;
- }
- int isValid(char tablero[N][N], int x, int y, int i, int letras[]){
- int newx = x + mov[i][0];
- int newy = y + mov[i][1];
- if(newx >=0 && newx <4 && newy>=0 && newy<4){
- if(esVocal(tablero,newx,newy)){
- if(letras[0] < 2)
- return 1;
- return 0;
- }else{
- if(letras[1] < 2)
- return 1;
- return 0;
- }
- }
- return 0;
- }
- int esVocal(char tablero[N][N], int newx, int newy){
- char letra = tablero[newx][newy];
- if(letra=='A' || letra=='E' || letra=='I' || letra=='O' || letra=='U' || letra=='Y')
- return 1;
- return 0;
- }
- void printArray(char diccionario[100][4], int count){
- int i,j;
- for(i=0; i<count; i++){
- for(j=0; j<4; j++)
- printf("%c ",diccionario[i][j]);
- printf("\n");
- }
- printf("\n");
- }
- void add(char palabra[], int count){
- int i;
- for(i=0; i<4; i++){
- diccionario[count-1][i] = palabra[i];
- }
- }
- int pertenece(char palabra[]){
- int i;
- for(i=0; i<count; i++){
- if(strcmp(diccionario[i],palabra) == 0)
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement