Autor
|
Tema: como hacer un generador?? (Leído 25,208 veces)
|
DickGumshoe
|
jejej había compilado el otro còdigo ... con razón ya me parecía extraño...
Si compilaste el primer código que puse yo deberían haberte salido 11 881 376 combinaciones... Qué raro...
|
|
« Última modificación: 13 Julio 2012, 14:59 pm por DickGumshoe »
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. La cantidad de combinaciones desde A-Z (sin contar la Ñ) en una cadena de 10 segun este algoritmo es de (26 ^ 10) = 141167095653376 combinaciones posibles desde AAAAAAAAAA hasta ZZZZZZZZZZ.
Dulces Lunas!¡.
|
|
« Última modificación: 13 Julio 2012, 15:05 pm por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
DickGumshoe
|
La cantidad de combinaciones desde A-Z en una cadena de 10 es ¨(26 ^ 10) = 141167095653376
Dulces Lunas!¡.
Pero en el código que va de la A a la Z es de cinco caracteres por combinación, y por lo tanto es de 26 5= 11881376 combinaciones posibles. Por cierto, a espera de que alguien conteste si es posible hacer el programa para ejecutarlo en un ordenador "normal", dejo la última versión que he hecho. En esta reduzco la extensión del código, le quito la mayor parte de las funciones recursivas y mejoro la eficiencia: #include <stdio.h> FILE *fp; void numeros(char *Letras, int n) { int i; for(i=0;i<100000;i++) { fprintf(fp , "%s%.5d\n", Letras , i ); } } void Generador(char *Letras, int n) { int count, resta=1, llamada; while(llamada != 5) { numeros(Letras, n); count = n; Letras[n]++; llamada = 0; while(count >= 0) { if(Letras[count] > 90) { Letras[count] = 65; Letras[n-resta]++; llamada++; } count--; resta++; } } } int main() { char Letras[] = "AAAAA"; fp = fopen("combinacion.txt", "w"); Generador(Letras, 4); return 0; }
Saludos!
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Queda claro que la cantidad esta dada por 26^N y debido a esto le hice una modificación a mi código... http://foro.elhacker.net/programacion_cc/como_hacer_un_generador-t366597.0.html;msg1765220#msg1765220 #include <iostream> #include <cmath> using namespace std; inline string &addWord(string &text) { string::reverse_iterator it = text.rbegin(); for (; it != text.rend(); it++) { ++(*it); if (tolower(*it) >= 'a' && tolower(*it) <= 'z') break; (*it) = (islower(*it))? 'a': 'A'; } return text; } size_t addAllWord(string text, void (*callback)(string&, bool&) = NULL) { bool cancel = false; register size_t i = 0, lim = pow(26, text.size()); if (!callback) return lim; for (;(i < lim) && (cancel ==false); i++) { callback(addWord(text), cancel); } return i; } void showWords(string& text, bool& cancel) { cout << text << endl; } int main() { string text = "ZZZx"; cout << addAllWord(text, showWords) << endl; cin.get(); return 0; }
|
|
« Última modificación: 13 Julio 2012, 15:28 pm por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
DickGumshoe, yo supongo que si se puede ejecutar en un ordenador "normal", sin salida por consola y sin almacenar el resultado en un archivo de texto claro No en serio, quiza se pueda hacer con combinaciones de 4 o 5, a lo sumo 6 caracteres. Saludos.
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
dato000
Desconectado
Mensajes: 3.034
|
siempre se queda muuuuy lento cuando va como en "FMMMM" ummm supongo que un core 2 duo tambien demora bastante para esta tarea el codigo en visual es nuevo para mi, porque apenas si se algo de basic, y absolutamente nada de .NET o C#. La cantidad de combinaciones desde A-Z en una cadena de 10 es ¨(26 ^ 10) = 141167095653376
ouch ouch ouch, es en serio?????? ouch ouch ouch. DickGumshoe, yo supongo que si se puede ejecutar en un ordenador "normal", sin salida por consola y sin almacenar el resultado en un archivo de texto claro No en serio, quiza se pueda hacer con combinaciones de 4 o 5, a lo sumo 6 caracteres. Saludos. pues eso hice, lo deje en 5 caracteres, y de 'A' hasta 'F' funciona sin problemas. me podrian explicar como hicieron el calculo de permutaciones?? el clasico nCr???
|
|
|
En línea
|
|
|
|
DickGumshoe
|
Daniyo, como bien dices, uno de 5 caracteres sí es posible ejecutarlo en un ordenador "normal", ya que el primer código que puse en este tema era de combinaciones desde AAAAA hasta ZZZZZ, y funcionaba perfectamente. jaime.urizar (el autor del tema): Por lo que parece generar todas las combinaciones posibles desde AAAAA00000 hasta ZZZZZ99999 (sin mezclar letras y números) es imposible en un ordenador "normal". Pero eso no quiere decir que no tengamos bien el código, que era la finalidad del tema, y entonces supongo que nos quedaremos con el último, que es el más corto y eficiente: #include <stdio.h> FILE *fp; void numeros(char *Letras, int n) { int i; for(i=0;i<100000;i++) { fprintf(fp , "%s%.5d\n", Letras , i ); } } void Generador(char *Letras, int n) { int count, resta=1, llamada; while(llamada != 5) { numeros(Letras, n); count = n; Letras[n]++; llamada = 0; while(count >= 0) { if(Letras[count] > 90) { Letras[count] = 65; Letras[n-resta]++; llamada++; } count--; resta++; } } } int main() { char Letras[] = "AAAAA"; fp = fopen("combinacion.txt", "w"); Generador(Letras, 4); return 0; }
Saludos! EDITO: Dato000, no había visto tu mensaje. Te explico: Para todas las combinaciones posibles entre de 5 caracteres usando las letras del abecedario sin contar la 'Ñ', lo calculamos haciendo 26 5=11881376 combinaciones posibles. Así, como para cada combinación de letras la repetimos 99999 veces (en el código que va desde AAAAA00000 hasta ZZZZZ99999), multiplicamos las combinaciones posibles desde AAAAA hasta ZZZZZ por 99999 (11881376 * 99999 = 1188125718624 combinaciones en total). Saludos!
|
|
« Última modificación: 13 Julio 2012, 15:38 pm por DickGumshoe »
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
jaime.urizar (el autor del tema): Por lo que parece generar todas las combinaciones posibles desde AAAAA00000 hasta ZZZZZ99999 (sin mezclar letras y números) es imposible en un ordenador "normal". Pero eso no quiere decir que no tengamos bien el código, que era la finalidad del tema, y entonces supongo que nos quedaremos con el último, que es el más corto y eficiente:
* No digas imposible por que si se puede. * Tu código Tiene Bastantes errores... revisa-lo con el mio y veras la diferencia... (cuando llega a por ejemplo AAAAZ se devuelve a AAAAA)... http://foro.elhacker.net/programacion_cc/como_hacer_un_generador-t366597.0.html;msg1765302#msg1765302* En el tema de los núcleos se tendría que separar La cadena en N donde N es la cantidad de núcleos, a su vez crear N hilos... esto es un poco mas tedioso por mi parte lo dejo asi. Bueno mi código ya funciona al 100% Dulces Lunas!¡.
|
|
« Última modificación: 13 Julio 2012, 15:41 pm por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
DickGumshoe
|
Pero el tuyo no va de AAAAA00000 hasta ZZZZZ99999, ¿no?
Digo que es imposible porque al final hemos quedado en que se necesitaban 108,058208922 TB, ¿no?
EDITO: ¿Qué error tiene el mío? Hasta donde he probado funciona perfectamente...
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
La problemática de almacenamiento es despreciable... lee bien lo que se quiere. hola amigos les pido ayuda con algo que vi desde hace mucho, es como realizar un generador que muestre como resultado: AAAAA AAAAB AAAAC ......... ......... ZZZZZ y algo mucho mas desafiante que no pude ni encontrar partes en internet y bueno mi conocimiento no es tan amplio pero decearia aprender a poder generar un.. AAAAA00000 AAAAA00001 AAAAA00002 .... .... .... AAAAB00000 AAAAB00001 .... ..... ZZZZZ99999 solo pude sacar cuantos resultados tendre (son 14348907000000 posibles combinaciones) una ayudita porfavor enserio me mata la curiosidad de aprender a hacer un contador o generador de ese tipo, y gracias de antemano por todo Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
hacer un generador de id con muestras
Ingeniería Inversa
|
robertofd1995
|
4
|
5,168
|
31 Octubre 2013, 15:13 pm
por robertofd1995
|
|
|
Como conseguir un generador de digito de control
Ingeniería Inversa
|
wiredbob
|
3
|
3,171
|
22 Julio 2014, 12:02 pm
por wiredbob
|
|
|
***Como hacer un generador de licencias en python
« 1 2 »
Scripting
|
Arn_dj
|
10
|
10,414
|
22 Diciembre 2014, 16:19 pm
por Arn_dj
|
|
|
MOVIDO: ***Como hacer un generador de licencias en python
Programación General
|
Eleкtro
|
0
|
2,031
|
8 Diciembre 2014, 23:17 pm
por Eleкtro
|
|
|
como hacer un vbs generador de batch
Scripting
|
destructor000
|
4
|
10,249
|
15 Septiembre 2024, 14:22 pm
por Eleкtro
|
|