Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define N 12
- void printArray(char matriz[N][N]);
- void toUpperArray(char palabra[]);
- int buscar(char pupi[N][N],int x,int y, char palabra[], int n);
- int isValid(char pupi[N][N], int x, int y, char palabra[], int n, int i);
- void toLower(char *letra);
- void toUpper(char *letra);
- void initMov();
- void printPalabra(char palabra[]);
- int mov[8][2];
- int movimiento,congelar;
- int main(){
- char matriz[N][N];
- int i,j;
- for(i=0; i<N; i++)
- for(j=0; j<N; j++)
- scanf("%c ",&matriz[i][j]);
- //printArray(matriz);
- //printf("\n");
- char palabra[] = {'S','t','a','r'};
- toUpperArray(palabra);
- int largo = strlen(palabra);
- //print word word = palabra in spanish
- for(i=0; i<strlen(palabra); i++)
- printf("%c",palabra[i]);
- printf("\n");
- initMov();
- int salir = 0;
- for(i=0; i<N; i++){
- //printf("Hola.\n");
- if(salir) break;
- for(j=0; j<N; j++){
- //printf("Hola.\n");
- movimiento = -2;
- if(buscar(matriz,i,j,palabra,0)){
- //printf("%d %d \n",i,j);
- printArray(matriz);
- salir = 1;
- break;
- }
- }
- }
- /*
- printf("Hola\n");
- if(buscar(matriz,2,7,palabra,0)){
- printf("%d %d \n",i,j);
- printArray(matriz);
- }
- */
- return 0;
- }
- void printPalabra(char palabra[]){
- int i;
- for(i=0; i<strlen(palabra); i++)
- printf("%c",palabra[i]);
- printf("\n");
- }
- void toUpperArray(char palabra[]){
- int largo = strlen(palabra);
- int i;
- for(i=0; i<largo; i++){
- if(palabra[i] >= 'a' && palabra[i] <= 'z'){
- palabra[i] = palabra[i] - 'a' + 'A';
- }
- }
- }
- void printArray(char matriz[N][N]){
- int i,j;
- printf("\n");
- for(i=0; i<N; i++){
- for(j=0; j<N; j++)
- printf("%c ",matriz[i][j]);
- printf("\n");
- }
- printf("\n");
- }
- int buscar(char pupi[N][N],int x,int y, char palabra[], int n){
- if(n == strlen(palabra)){
- return 1;
- }
- int i,newx,newy;
- for(i=0; i<8; i++){
- if(isValid(pupi,x,y,palabra,n,i)){
- newx = x + mov[i][0];
- newy = y + mov[i][1];
- toLower(&pupi[newx][newy]);
- //printf(" movimiento:%d\n letras:%d\n x:%d\n y:%d\n",movimiento,n+1,newx,newy);
- //printArray(pupi);
- if(buscar(pupi,newx,newy,palabra,n+1)){
- return 1;
- }else{
- toUpper(&pupi[newx][newy]);
- movimiento = -2;
- }
- }
- }
- return 0;
- }
- int isValid(char pupi[N][N], int x, int y, char palabra[], int n, int i){
- if(movimiento != -2)
- if(movimiento != i) return 0;
- int newx = x + mov[i][0];
- int newy = y + mov[i][1];
- if(newx>=0 && newx<N && newy>=0 && newy<N){
- if(pupi[newx][newy] == palabra[n]){
- if(n == 1) movimiento = i;
- return 1;
- }
- }
- return 0;
- }
- void toLower(char *letra){
- *letra = *letra - 'A' + 'a';
- }
- void toUpper(char *letra){
- *letra = *letra - 'a' + 'A';
- }
- void initMov(){
- 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; // abajo izquierda
- mov[3][1] = -1;
- mov[4][0] = 0; // izquierda
- mov[4][1] = -1;
- mov[5][0] = -1; // izquierda arriba
- mov[5][1] = -1;
- mov[6][0] = -1; // arriba
- mov[6][1] = 0;
- mov[7][0] = -1; // arriba derecha
- mov[7][1] = 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement