elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  estoy atascado, como formo palabras?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: estoy atascado, como formo palabras?  (Leído 3,326 veces)
risto

Desconectado Desconectado

Mensajes: 31


Cosas pequeñas que hacen cosas grandes


Ver Perfil
estoy atascado, como formo palabras?
« en: 27 Marzo 2012, 09:50 am »

Hola! Mirad estoy haciendo un proyecto por puro aburrimiento y por hobby o como querais decirlo. La cuestión es que estaba una noche mirando la tele y apareció un programa de esos que sale una tabla de 6x6 o lo que sea y te piden que saques el nombre de 7 animales por ejemplo.  Bueno pues me iluminé jajaj pensé voy a hacer un programa que me saque las palabras en español de esa tabla.

Me dije a mi mismo que necesitaba C por su velocidad aunque estoy bastante perdido, hacía mucho que no programaba en C. Una vez con el diccionario en español(al cual todavia tengo que quitarle caracteres especiales) ice la parte del programa en el que se comparan una lista de palabras con el diccionario(me costó lo suyo ya que lo hago caracter a caracter y no con strings). Perfecto, ahora solo necesito sacar la lista de palabras de la tabla, y aquí es donde tengo el problema. Atentos por favor:

Esta es la representación de la tabla en el array:

x a g h j
h d h w i
s h j q g
a j j r w
a g h k r

Bien pues me gustaria genererar palabras apartir de este array bidimensional y quedaría así en plan sopa de letras:
xa
xag
xagh
xaghj
ag
agh
aghj
gh
ghj
hj
...
Bueno estas serian las palabras de lo que seria la primera linea horizontal de izquierda a derecha, estoy bastante atascado, es mas difícil de lo que pensé en un principio sacar estas combinaciones, me conformo con sacar las horizontales de izquierda a derecha y de arriba abajo.

Una mano porfavor no quisiera dejar el programa a medias :(

Ahora estoy en el curro haciendo practicas :( despues cuando llegue a casa subo el codigo a ver si así os motiváis mas :P (aunque me da verguenza enseñar esa chapucilla XD)

A por cierto, lo mismo que tengo hecho en C osea la comparación de una lista de palabras con otra(el dic) también la hice en script bash, por probar y porque era un momento, mi experiencia ha sido gratificante ya que comparar el diccionario 10 veces por ejemplo tarda unos 5 segundos mientras que en C es instantáneo.

PD: No pido el programa hecho, solo necesito una mano con el algoritmo a utilizar.


« Última modificación: 27 Marzo 2012, 12:37 pm por risto » En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: estoy atascado, como formo palabras?
« Respuesta #1 en: 28 Marzo 2012, 01:45 am »

Citar
Hola! Mirad estoy haciendo un proyecto por puro aburrimiento y por hobby o como querais decirlo. La cuestión es que estaba una noche mirando la tele y apareció un programa de esos que sale una tabla de 6x6 o lo que sea y te piden que saques el nombre de 7 animales por ejemplo.  Bueno pues me iluminé jajaj pensé voy a hacer un programa que me saque las palabras en español de esa tabla.
Esos programas son los que están a la media noche y hay que mandar msjs de celular ?, pregunto porque no entendía bien cual era el juego que te proponías.

Para comenzar:
Imaginemos que tenés una tabla de 5x5 ( 25 letras ). Si tuvieras que formar palabras de 25 caracteres, es decir usando todas las letras, la cuenta sería: 25! ( factorial de 25 ) = 15511210043330985984000000 de combinaciones. Un número bastante grande, sin contar palabras con menos de 25 caracteres.
Ahora, si la palabra tuviera que ser formada por letras continuas, el número se reduce bastante pero sigue siendo grande a mi parecer.

Entonces lo primero que deberías hacer es crear funciones para buscar de forma fácil en filas, columnas, diagonales, etc. Yo personalmente, usaría c++ para simplificar un poco el código, y usar POO.
Y tal vez podrías agregar ciertas restricciones, por ejemplo que las palabras sean mayores a 4 letras y menores a 10.
Luego no queda más que recorrer la matriz y combinar las palabras con el diccionario.


En línea

risto

Desconectado Desconectado

Mensajes: 31


Cosas pequeñas que hacen cosas grandes


Ver Perfil
Re: estoy atascado, como formo palabras?
« Respuesta #2 en: 28 Marzo 2012, 09:57 am »

No hay que enviar mensajes con el movil, hay que llamar, pero no pienso llamar, eso es una estafa.

Las palabras deben ser consecutivas, en plan sopa de letras.
Como tu dices las palabras que quiero formar tendrian que ser de 3 caracteres mínimo y máximo el tamaño de la linea ya que no habra una tabla de 20X20 tampoco... Ayer conseguí hacer las palabras horizontales de izquierda a derecha(que en una tabla de 10x10 me salian 450 palabras) y las comparé contra un diccionario de letras en español de 1 millon de palabras, la verdad es que en 1 o 2 segundos me sacaba todas las palabras que coincidian.

No soy especialmente experimentado en c, nunca he tocado c++ pero estoy por borrar el programa y volverlo a hacer quizá me plantee hacerlo en c++

Ya que estoy plantearé una duda, puede sonar a locura no se... yo lo que hago con el diccionario es meter las palabras del archivo en un array bidimensional de chars, los meto de 200.000 en 200.000 ya que no me dejaba hacer un array de 1 millon XD Ya sé que pareceré un ignorante xd pero alguien me podría explicar esto? hago bien en pasar los datos del archivo al array?

Sobre lo de formar palabras se puede decir que ya esta solucionado, quizá me precipite al escribir el post.

PD:cuando termine el programa lo subo prometido ;)
En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: estoy atascado, como formo palabras?
« Respuesta #3 en: 28 Marzo 2012, 21:51 pm »

No parecés un ignorante para nada, tranquilo. Sí,  es muy grande un array de 200.000x200.000, y en este caso tal vez deberías:
 - abrir el archivo
 - tomar los primeros 100 datos
 - analizarlos
 - tomar los siguientes 100 datos
 - ( ... )
 - cerrar el archivo

De esta forma también es mucho más fácil solucionar errores en el programa más rápidamente.

Citar
No soy especialmente experimentado en c, nunca he tocado c++ pero estoy por borrar el programa y volverlo a hacer quizá me plantee hacerlo en c++
Como te decía más arriba, me parece más sencillo escribir el código en C++. Podés usar STL( list, vector, etc ) con strings y tus propias clases. En menos código harías lo mismo y queda más entendible.
Saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hola necesito ayuda estoy atascado !!!
Programación Visual Basic
5 4,299 Último mensaje 15 Mayo 2005, 15:13 pm
por
Un empujoncito estoy atascado.........
Ingeniería Inversa
Revolutions 2 3,077 Último mensaje 22 Febrero 2009, 03:00 am
por tena
Estoy atascado al querer desbloquear un programa
Ingeniería Inversa
salman630 5 4,160 Último mensaje 4 Junio 2013, 02:13 am
por salman630
Obtener acceso OpenSSH 5.3 (Protocol 2.0) Estoy atascado
Hacking
elhombresito 1 7,067 Último mensaje 21 Noviembre 2014, 17:23 pm
por Varlch
duda sencilla( pero estoy atascado..) [ SOLUCIONADO ]
Java
Juanma91 4 2,028 Último mensaje 18 Febrero 2015, 03:59 am
por 3n31ch
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines