Advertisement
eduardovp97

PigEwu

Sep 19th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define N 4
  4.  
  5. char diccionario[100][4];
  6. int mov[8][2];
  7. int count;
  8.  
  9. void pigewu(char tablero[N][N], int x, int y, int letras[],char palabra[]);
  10. int isValid(char tablero[N][N], int x, int y, int i, int letras[]);
  11. int esVocal(char tablero[N][N], int newx, int newy);
  12. void printArray(char diccionario[100][4], int count);
  13. void add(char palabra[], int count);
  14.  
  15. int main(){
  16.    
  17.     mov[0][0] = 0; //derecha
  18.     mov[0][1] = 1;
  19.     mov[1][0] = 1; //derecha abajo
  20.     mov[1][1] = 1;
  21.     mov[2][0] = 1; //abajo
  22.     mov[2][1] = 0;
  23.     mov[3][0] = -1; //izquierda abajo
  24.     mov[3][1] = 1;
  25.     mov[4][0] = 0; //izquierda
  26.     mov[4][1] = -1;
  27.     mov[5][0] = -1; //izquierd arriba
  28.     mov[5][1] = -1;
  29.     mov[6][0] = -1; // arriba
  30.     mov[6][1] = 0;
  31.     mov[7][0] = -1; // arriba derecha
  32.     mov[7][1] = 1;
  33.    
  34.     int letras[2] = {0};
  35.     int palabrasT = 0;
  36.     char palabra[4];
  37.     char tablero[N][N] = {{'A','S','S','D'},{'S','B','E','Y'},{'G','F','O','I'},{'H','U','U','K'}};
  38.     int i=0,j=0;
  39.     for(i=0; i<N; i++){
  40.         for(j=0; j<N; j++){
  41.             if(esVocal(tablero,i,j))
  42.                 letras[0]++;
  43.             else
  44.                 letras[1]++;
  45.             palabra[0] = tablero[i][j];
  46.             pigewu(tablero,i,j,letras,palabra);
  47.             palabrasT += count;
  48.         }
  49.     }
  50.     printArray(diccionario,count);
  51.     return 0;
  52. }
  53.  
  54. void pigewu(char tablero[N][N], int x, int y, int letras[], char palabra[]){
  55.     if(letras[0] + letras[1] == 4){
  56.         if(!pertenece(palabra)){
  57.             count++;
  58.             add(palabra,count);
  59.             printArray(diccionario,count);
  60.         }
  61.         return ;
  62.     }
  63.     int i;
  64.     int newletras[2],newx,newy;
  65.     char newpalabra[4];
  66.     strcpy(newpalabra,palabra);
  67.    
  68.     newletras[0] = letras[0];
  69.     newletras[1] = letras[1];
  70.    
  71.     for(i=0; i<8; i++){
  72.         if(isValid(tablero,x,y,i,letras)){
  73.             newx = x + mov[i][0];
  74.             newy = y + mov[i][1];
  75.             if(esVocal(tablero,newx,newy))
  76.                 newletras[0] = letras[0] + 1;
  77.             else
  78.                 newletras[1] = letras[1] + 1;
  79.             newpalabra[newletras[0]+newletras[1]-1] = tablero[newx][newy];
  80.             pigewu(tablero,newx,newy,newletras,newpalabra);
  81.         }
  82.     }
  83.     return ;
  84. }
  85.  
  86. int isValid(char tablero[N][N], int x, int y, int i, int letras[]){
  87.     int newx = x + mov[i][0];
  88.     int newy = y + mov[i][1];
  89.     if(newx >=0 && newx <4 && newy>=0 && newy<4){
  90.         if(esVocal(tablero,newx,newy)){
  91.             if(letras[0] < 2)
  92.                 return 1;
  93.             return 0;
  94.         }else{
  95.             if(letras[1] < 2)
  96.                 return 1;
  97.             return 0;
  98.         }
  99.     }
  100.     return 0;
  101. }
  102.  
  103. int esVocal(char tablero[N][N], int newx, int newy){
  104.     char letra = tablero[newx][newy];
  105.     if(letra=='A' || letra=='E' || letra=='I' || letra=='O' || letra=='U' || letra=='Y')
  106.         return 1;
  107.     return 0;
  108. }
  109.  
  110. void printArray(char diccionario[100][4], int count){
  111.     int i,j;
  112.     for(i=0; i<count; i++){
  113.         for(j=0; j<4; j++)
  114.             printf("%c ",diccionario[i][j]);
  115.         printf("\n");
  116.     }
  117.     printf("\n");
  118. }
  119.  
  120. void add(char palabra[], int count){
  121.     int i;
  122.     for(i=0; i<4; i++){
  123.         diccionario[count-1][i] = palabra[i];
  124.     }
  125. }
  126.  
  127. int pertenece(char palabra[]){
  128.     int i;
  129.     for(i=0; i<count; i++){
  130.         if(strcmp(diccionario[i],palabra) == 0)
  131.             return 1;
  132.     }
  133.     return 0;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement