Hay dos formas de enfocar el problema:
- Leer la sopa de letras como una matriz de caracteres e ir tomando
para cada posición las ocho direcciones posibles e ir comparando cada
palabra que empiece por esa letra.
- Leer cada fila, columna y diagonal como un string, y para cada
una de ellas buscar dentro de esa cadena cada palabra (y también su palíndromo,
dado que la palabra puede encontrarse "al revés"). En este
caso la cantidad de comparaciones que se realizan es mucho menor que en la primera,
aunque el código queda un poco menos legible. Los palíndromos
se van hallando a la vez que se lee cada palabra. Las diagonales y columnas
se obtienen después de leer el fichero de entrada. Así que sólo
queda ir recorriendo una vez cada fila, columna y diagonal y buscando dentro
de ellas cada palabra.
Ofrecemos la solución a ambas alternativas. Por un lado,
la solución en lenguaje C resuelve el problema de la forma más
directa (la primera); por otro, la solución en lenguaje Pascal utiliza
el segundo enfoque. Código Código fuente en C Código fuente en Pascal |