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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como hacer un generador??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] 4 5 6 Ir Abajo Respuesta Imprimir
Autor Tema: como hacer un generador??  (Leído 24,812 veces)
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: como hacer un generador??
« Respuesta #20 en: 13 Julio 2012, 02:45 am »

¿7777 combinaciones? Son demasiado pocas. A mí me hace todas (comprobado desde el fichero que genera) y son muchísimas más...

Edito:

Hay 2,75854735 × 1015 combinaciones, creo.

Saludos!

jajaj seeee 7777 es algo minusculo realmente.

Código:
printf("%s%.5d\n",Letras, i);

lo deje a
Código:
printf("%s\n",Letras);

para no imprimir esos numeros, pues no entiendo porque lo dejaste, alguna info sobre el porque debe hacerse seria de gran ayuda.
Je en esta tarde me dedique a dormir por el cansancio que tenia, y hasta hace poco tengo que mirar otras cosas, pero me voy a dedicar a hacer este problema, como dices, es algo divertido mirar como podria dejar mejor el funcionamiento, si la recursividad es algo, ummm como decirlo, jodido, pero vale la pena entenderlo.


En línea


xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: como hacer un generador??
« Respuesta #21 en: 13 Julio 2012, 06:11 am »

una pregunta asi por curiosidad... cuanto os dura el programa ejecutandose y cuanto os ocupa el archivo generado?

lo pregunto porque yo para hacer esta combinacion mas corta "AAAA000 hasta ZZZZ9999" llevaba unos 20 minutos o mas y 35GB de archivo cuando le he dado a cancelar. no se si me he liado haciendo el programa o que...

gracias!


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #22 en: 13 Julio 2012, 06:37 am »

te dejo este codigo en vb6...

http://foro.elhacker.net/programacion_visual_basic/palabras_aleatorias_sin_repeticion_ayuda-t296715.0.html

en si la parte que genera las combinaciones es este... muy simple y corto verdad?...

Código
  1.  
  2. Private Sub CombinateString(ByRef Str_String As String, Optional ByRef str_Fix As String, Optional ByRef Cancel As Boolean)
  3. Dim Lng_LenStr                                  As Long
  4. Dim Lng_LenStrIndex                             As Long
  5.    If Cancel Then Exit Sub
  6.    Lng_LenStr = Strings.Len(Str_String)
  7.    If Lng_LenStr <> 1 Then
  8.        For Lng_LenStrIndex = 1 To Lng_LenStr
  9.            Call CombinateString(Strings.Left$(Str_String, Lng_LenStrIndex - 1) & Strings.Mid$(Str_String, Lng_LenStrIndex + 1), str_Fix & Strings.Mid$(Str_String, Lng_LenStrIndex, 1), Cancel)
  10.        Next
  11.    Else
  12.        RaiseEvent StrOuput(str_Fix & Str_String, Cancel) ' <--- este en C++ seria un callback a un proceso X el cual otendria por un parametro la cadena combinada, se ejecutaria N veces... el segundo parametro seria una variable booleana para cancelar el generador de cadenas (combinaciones)...
  13.    End If
  14. End Sub
  15.  
  16.  

En unos segundos te lo subo en C++.

Duñlces Lunas.
« Última modificación: 13 Julio 2012, 06:41 am por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #23 en: 13 Julio 2012, 07:30 am »

creo que la cague en mi post anterior... te dejo la funcion que hace lo que tu quieres.

Código
  1.  
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. string &AddWord(string &text) {
  6.    string::reverse_iterator it = text.rbegin();
  7.    for (; it != text.rend(); it++) {
  8.        ++(*it);
  9.        if (tolower(*it) >= 'a' && tolower(*it) <= 'z') break;
  10.        (*it) = (islower(*it))? 'a': 'A';
  11.    }
  12.    return text;
  13. }
  14.  
  15. int main() {
  16.    string text = "ZZZx";
  17.    cout << AddWord(text) << endl;
  18.    cout << AddWord(text) << endl;
  19.    cout << AddWord(text) << endl;
  20.    cout << AddWord(text) << endl;
  21.    cout << AddWord(text) << endl;
  22.    cout << AddWord(text) << endl;
  23.    cout << AddWord(text) << endl;
  24.    cout << AddWord(text) << endl;
  25.    cout << AddWord(text) << endl;
  26.    cin.get();
  27.    return 0;
  28. }
  29.  
  30.  

y aquí el de las permutaciones del post anterior...

Código
  1.  
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. size_t permutaciones (string text, string textFix, void (*callback)(string, bool), bool cancel = false) {
  6.    size_t ret = 0;
  7.    if (cancel) return ret;
  8.    if (text.size()) {
  9.        for (register size_t i = 0; i < text.size(); i++) {
  10.            ret += permutaciones (text.substr(0, i) + text.substr(i + 1), textFix + text.substr(i, 1), callback, cancel);
  11.            if (cancel) return ret;
  12.        }
  13.    } else {
  14.        callback(textFix + text, cancel);
  15.    }
  16.    return ret;
  17. }
  18.  
  19. void showWord(string text, bool cancel) {
  20.    cout << text << endl;
  21. }
  22.  
  23. int main() {
  24.    permutaciones ("hola", "", showWord);
  25.    cin.get();
  26.    return 0;
  27. }
  28.  
  29.  

Dulces Lunas!¡.
« Última modificación: 13 Julio 2012, 07:39 am por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #24 en: 13 Julio 2012, 13:12 pm »

Citar
jajaj seeee 7777 es algo minusculo realmente.


Código:
printf("%s%.5d\n",Letras, i);

lo deje a

Código:
printf("%s\n",Letras);

para no imprimir esos numeros, pues no entiendo porque lo dejaste, alguna info sobre el porque debe hacerse seria de gran ayuda.
Je en esta tarde me dedique a dormir por el cansancio que tenia, y hasta hace poco tengo que mirar otras cosas, pero me voy a dedicar a hacer este problema, como dices, es algo divertido mirar como podria dejar mejor el funcionamiento, si la recursividad es algo, ummm como decirlo, jodido, pero vale la pena entenderlo.

El %.5d debe ponerse porque en esta versión del código para mejorar la eficiencia hice que los números fueran separados de las letras.

Citar
una pregunta asi por curiosidad... cuanto os dura el programa ejecutandose y cuanto os ocupa el archivo generado?

lo pregunto porque yo para hacer esta combinacion mas corta "AAAA000 hasta ZZZZ9999" llevaba unos 20 minutos o mas y 35GB de archivo cuando le he dado a cancelar. no se si me he liado haciendo el programa o que...

gracias!

El tiempo exacto no lo sé, pero sí que tarda muchísimo en finalizar y ocupa también mucho... ¿Será malo para el ordenador?  :-[

Gracias por el código, BlackZeroX (Astaroth). Ahora los miro!

Saludos!

EDITO: Finalmente son 1 188 125 718 624 combinaciones posibles!
« Última modificación: 13 Julio 2012, 13:17 pm por DickGumshoe » En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: como hacer un generador??
« Respuesta #25 en: 13 Julio 2012, 13:37 pm »

11881125718624 combinaciones a 10 caracteres por combinacion, 118811257186240 x sizeof(char) = 118811257186240 bytes no es asi?

Saludos.

PD: Si hicieses un programa que crease varios fork() haciendo eso mismo, podrias colapsar un superordenador  :xD :xD
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
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #26 en: 13 Julio 2012, 13:44 pm »

Sí... Demasiada memoria ocupa...

Ahora me pongo a ver qué puedo hacer para mejorarlo, pero creo que no hay mucho que hacer salvo reducir el código..., porque las combinaciones, queramos o no, van a ser 11881125718624, y como dice daniyo eso serían 11881125718624 bytes... Bueno, ya veré sobre la marcha qué hago  :xD

Saludos!
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: como hacer un generador??
« Respuesta #27 en: 13 Julio 2012, 14:20 pm »

Sí... Demasiada memoria ocupa...

Ahora me pongo a ver qué puedo hacer para mejorarlo, pero creo que no hay mucho que hacer salvo reducir el código..., porque las combinaciones, queramos o no, van a ser 11881125718624, y como dice daniyo eso serían 11881125718624 bytes... Bueno, ya veré sobre la marcha qué hago  :xD

Saludos!

Te ha faltado un cero, piensa que son 10 caracteres por combinacion. 118811257186240  bytes = 116026618345,9375 KB = 113307244,47845459 MB = 110651,605935991 GB = 108,058208922 TB
 :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o

Creo que esta bien...
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
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #28 en: 13 Julio 2012, 14:24 pm »

Sí, copié mal tu resultado, pero sí que lleva el 0.

¿¿¡¡108,058208922 TB!!??  Por lo tanto, es imposible hacer el programa para ejecutarse en un ordenador "normal", ¿no? Aunque el mío sea bastante potente dudo que tenga 108,05 TB xD...

Saludos  :-[
En línea

SXF

Desconectado Desconectado

Mensajes: 189



Ver Perfil WWW
Re: como hacer un generador??
« Respuesta #29 en: 13 Julio 2012, 14:30 pm »

jejej había compilado el otro còdigo ... con razón ya me parecía extraño...
En línea

Páginas: 1 2 [3] 4 5 6 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
hacer un generador de id con muestras
Ingeniería Inversa
robertofd1995 4 5,131 Último mensaje 31 Octubre 2013, 15:13 pm
por robertofd1995
Como conseguir un generador de digito de control
Ingeniería Inversa
wiredbob 3 3,130 Último mensaje 22 Julio 2014, 12:02 pm
por wiredbob
***Como hacer un generador de licencias en python « 1 2 »
Scripting
Arn_dj 10 10,284 Último mensaje 22 Diciembre 2014, 16:19 pm
por Arn_dj
MOVIDO: ***Como hacer un generador de licencias en python
Programación General
Eleкtro 0 1,981 Último mensaje 8 Diciembre 2014, 23:17 pm
por Eleкtro
como hacer un vbs generador de batch
Scripting
destructor000 4 9,098 Último mensaje 15 Septiembre 2024, 14:22 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines