HTML.it è il sito italiano del web publishing

[c]Generare codice alfanumerico



scegli un altro forum
  Pagine (3): [ <   1   2   3   > ]  Indietro   Ricarica   Avanti Invia una risposta

Autore
Discussione     
ant_alt
Utente bannato



Registrato il: Feb 2004

Provenienza: 41° Parallelo

Messaggi: 2817


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da oregon
Probabilmente e' una regola adottata per generare gli ID Microsoft ...


non penso anche se credo che la tua ipotesi possa essere giusta, rileggendo
Citazione:
...però bisogna anche dire che ci sono quelle stringhe fatte magari da xxx1-xxxx-1xxx-xxxx-xxxx dove si ripete un numero oppure una lettera .. magari anche 3 / 4 volte...


se ciò è vero è anche un cracker stupido perchè nel programmare un bruteforce non togli le sequenze "brutte" (000....000123, o 12345...abcdef) solo perchè non ti sembrano un codice potenzialmente valido


__________________
www.nabbaitalia.it Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare

Segnala ad un moderatore | IP: Collegato | Permalink

ant_alt è offline Old Post 05-10-2009 19:05
Clicca qui per vedere il profilo dell'utente ant_alt Clicca qui per inviare all'utente ant_alt un messaggio privato Visualizza ulteriori messaggi scritti dall'utente ant_alt Aggiungi l'utente ant_alt alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
alka
Moderatore di Programmazione e CGI-Perl



Registrato il: Oct 2001

Provenienza: Reggio Emilia

Messaggi: 23400


ICQ :

MSN :

Skype :


Moderazione
Francamente, la richiesta mi sembra tutt'altro che chiara... prima si parla di numeri, poi di numeri e lettere, poi di ripetizioni da evitare e di caratteri da includere...

Insomma, invito l'autore della discussione a definire in modo chiaro e fissato una volta per tutte cosa deve generare e qual è l'utilità o lo scopo della richiesta o del programma, così da evitare il porsi di innumerevoli domande solo per capire il problema.


__________________
MARCO BREVEGLIERI
Sviluppo Software e Web
Consulenza e corsi di programmazione

http://www.marco.breveglieri.name

Segnala ad un moderatore | IP: Collegato | Permalink

alka è offline Old Post 05-10-2009 19:07
Clicca qui per vedere il profilo dell'utente alka Clicca qui per inviare all'utente alka un messaggio privato Visita l'homepage dell'utente alka Visualizza ulteriori messaggi scritti dall'utente alka Aggiungi l'utente alka alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
networkman
Utente di HTML.it



Registrato il: Oct 2009

Provenienza:

Messaggi: 11


ICQ :

MSN :

Skype :


uhmmm...sono usciti altri aspetti durante le conversazioni...

Citazione:
Francamente, la richiesta mi sembra tutt'altro che chiara... prima si parla di numeri, poi di numeri e lettere, poi di ripetizioni da evitare e di caratteri da includere... Insomma, invito l'autore della discussione a definire in modo chiaro e fissato una volta per tutte cosa deve generare e qual è l'utilità o lo scopo della richiesta o del programma, così da evitare il porsi di innumerevoli domande solo per capire il problema.


Alka hai ragione ...


..scusate forse mi sono espresso male... ricapitoliamo il tutto:

1) è possibile avere un programma che mi generi stringhe di codici contenenti "TUTTE LE COMBINAZIONI POSSIBILI" formata da 24 caratteri alfanumerici..ovvero composti da numeri e lettere...(le lettere mi interessano solo in minuscolo)...


es : abcd-1234-e5f6-78gh-i90j ...


2) è possibile fare in modo che all'interno della stringa si ripetano numeri o lettere non più di 3 volte..(sempre avendo tutte le combinazioni possibili):


es: abcd-123a-e5a6-78gh-i90j ok! ; e5a6-123a-78gh-i90j-abcd ok! ; axxx-xxxa-xxax-xxxx-xxax NO! ecc....


3)..se è vero che il primo programma dovrebbe includere tutte queste combinazioni.. si potrebbe creare una formula matematica..robba di algoritmi (o non so perchè non conosco ancora).. in modo tale che mi vada ad escludere tutte le combinazioni che non mi interessano ovvero quelle combinazioni con più di 3 numeri o lettere ...che si ripetono all'interno della stessa stringa?...

..così da escludere un esercito di combinazioni inutili?

4) infine dato che non conosco ancora bene il C.. invece di inserire il "printf" per restituirmi a video i dati..volevo sapere se esiste ( so che esiste ) una funzione che mi salvi l'output in un file di .txt...


..Quindi vorrei avere un file di testo con l'output del programma!


...spero di essere stato chiaro !




Citazione:
Citazione:
Originariamente inviato da oregon
Probabilmente e' una regola adottata per generare gli ID Microsoft ...


non penso anche se credo che la tua ipotesi possa essere giusta, rileggendo
Citazione:
...però bisogna anche dire che ci sono quelle stringhe fatte magari da xxx1-xxxx-1xxx-xxxx-xxxx dove si ripete un numero oppure una lettera .. magari anche 3 / 4 volte...


se ciò è vero è anche un cracker stupido perchè nel programmare un bruteforce non togli le sequenze "brutte" (000....000123, o 12345...abcdef) solo perchè non ti sembrano un codice potenzialmente valido


oregon...non sto generando nessun ID Microsoft... ho messo i trattini di separazione negli esempi per renderli più leggibili..non per questo uno deve pensare agli ID Microsoft...

ant_alt ...1) non sono cracker; 2) ..penso che per giudicare una persona bisogna conoscerla sino in fondo ...


saluti !

Segnala ad un moderatore | IP: Collegato | Permalink

networkman è offline Old Post 06-10-2009 14:19
Clicca qui per vedere il profilo dell'utente networkman Clicca qui per inviare all'utente networkman un messaggio privato Visualizza ulteriori messaggi scritti dall'utente networkman Aggiungi l'utente networkman alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
alka
Moderatore di Programmazione e CGI-Perl



Registrato il: Oct 2001

Provenienza: Reggio Emilia

Messaggi: 23400


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da networkman
..scusate forse mi sono espresso male... ricapitoliamo il tutto [...]

Di quanto hai scritto nel messaggio, quanto ne hai sviluppato?

Poiché se stai cercando di scrivere un algoritmo e ci sono degli errori o difficoltà particolari, allora è un conto; se invece attendi che siano altri a scriverlo, siamo nel posto sbagliato (qui non si fanno lavori su commissione, gratuiti o retribuiti).


__________________
MARCO BREVEGLIERI
Sviluppo Software e Web
Consulenza e corsi di programmazione

http://www.marco.breveglieri.name

Segnala ad un moderatore | IP: Collegato | Permalink

alka è offline Old Post 06-10-2009 14:22
Clicca qui per vedere il profilo dell'utente alka Clicca qui per inviare all'utente alka un messaggio privato Visita l'homepage dell'utente alka Visualizza ulteriori messaggi scritti dall'utente alka Aggiungi l'utente alka alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
networkman
Utente di HTML.it



Registrato il: Oct 2009

Provenienza:

Messaggi: 11


ICQ :

MSN :

Skype :


alka... scusa ma ripeto per l'ennesima volta che sono ancora un novellino...

volevo solo sapere se
1) era fattibile una cosa del genere e se
2) avevate qualke idea su come andasse fatto..tutto qui..

...non è che voglio la "pappa pronta"..chiedevo solo uno spunto...

...se non siete disposta a darmela pazienza... ed anzi scusa per il disturbo !

Segnala ad un moderatore | IP: Collegato | Permalink

networkman è offline Old Post 06-10-2009 14:32
Clicca qui per vedere il profilo dell'utente networkman Clicca qui per inviare all'utente networkman un messaggio privato Visualizza ulteriori messaggi scritti dall'utente networkman Aggiungi l'utente networkman alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
ant_alt
Utente bannato



Registrato il: Feb 2004

Provenienza: 41° Parallelo

Messaggi: 2817


ICQ :

MSN :

Skype :


codice:
#include<stdio.h>

#include<windows.h>  
char box[]=
{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','q','r','s','t','u','v','w','x','y','z'};  

int A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,zero,uno,due,tre,quattro,
    cinque,sei,sette,otto,nove,dieci;
int c1,c2;
int validCode(char* string){
    A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=zero=uno=due=tre=quattro=cinque=sei=sette=otto=nove=dieci=0;
    for(c1=0;c1<25;c1++){
                  if(string[c1]==box[0]) zero++;
                  if(string[c1]==box[1]) uno++;
                  if(string[c1]==box[2]) due++;
                  if(string[c1]==box[3]) tre++;
                  if(string[c1]==box[4]) quattro++;
                  if(string[c1]==box[5]) cinque++;
                  if(string[c1]==box[6]) sei++;
                  if(string[c1]==box[7]) sette++;
                  if(string[c1]==box[8]) otto++;
                  if(string[c1]==box[9]) nove++;
                  if(string[c1]==box[10]) dieci++;
                  if(string[c1]==box[11]) A++;
                  if(string[c1]==box[12]) B++;
                  if(string[c1]==box[13]) C++;
                  if(string[c1]==box[14]) D++;
                  if(string[c1]==box[15]) E++;
                  if(string[c1]==box[16]) F++;
                  if(string[c1]==box[17]) G++;
                  if(string[c1]==box[18]) H++;
                  if(string[c1]==box[19]) I++;
                  if(string[c1]==box[20]) J++;
                  if(string[c1]==box[21]) K++;
                  if(string[c1]==box[22]) L++;
                  if(string[c1]==box[23]) M++;
                  if(string[c1]==box[24]) N++;
                  if(string[c1]==box[25]) O++;
                  if(string[c1]==box[26]) P++;
                  if(string[c1]==box[27]) Q++;
                  if(string[c1]==box[28]) R++;
                  if(string[c1]==box[29]) S++;
                  if(string[c1]==box[30]) T++;
                  if(string[c1]==box[31]) U++;
                  if(string[c1]==box[32]) V++;
                  if(string[c1]==box[33]) W++;
                  if(string[c1]==box[34]) X++;
                  if(string[c1]==box[35]) Y++;
                  if(string[c1]==box[36]) Z++;
                               }
                               if(A>4||B>4||C>4||D>4||E>4||F>4||G>4||H>4||I>4||J>4||K>4||
                               L>4||M>4||N>4||O>4||P>4||Q>4||R>4||S>4||T>4||U>4||V>4||W>4||
                               X>4||Y>4||Z>4||zero>4||uno>4||due>4||tre>4||quattro>4||
                               cinque>4||sei>4||sette>4||otto>4||nove>4||dieci) return 0;
    return 1;
    }
main() 

{    
      int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;
      char buf[24];     
   
    for(a = 0;a<36;a++)
    for(b = 0;b<36;b++)
    for(c = 0;c<36;c++)  
    for(d = 0;d<36;d++)  
    for(e = 0;e<36;e++)  
    for(f = 0;f<36;f++)  
    for(g = 0;g<36;g++)  
    for(h = 0;h<36;h++)  
    for(i = 0;i<36;i++)  
    for(j = 0;j<36;j++)  
    for(k = 0;k<36;k++)  
    for(l = 0;l<36;l++)  
    for(m = 0;m<36;m++)  
    for(n = 0;n<36;n++)  
    for(o = 0;o<36;o++)  
    for(p = 0;p<36;p++)  
    for(q = 0;q<36;q++)  
    for(r = 0;r<36;r++)  
    for(s = 0;s<36;s++)  
    for(t = 0;t<36;t++)  
    for(u = 0;u<36;u++)  
    for(v = 0;v<36;v++)  
    for(w = 0;w<36;w++)  
    for(x = 0;x<36;x++)  {
          sprintf(buf,"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%\n",box[a],box[b],box[c],box[d],
          box[e],box[f],box[g],box[h],box[i],box[j],box[k],box[l],box[m],box[n],box[o],box[p],box[q],
          box[r],box[s],box[t],box[u],box[v],box[w],box[x]);
if(validCode(buf))printf("%s",buf);
}
 }


dovrebbe funzionare ma rimarrà ore senza stampare niente (soprattutto se hai un processore di media potenza) perchè per trovare un codice valido deve comunque scorrerli tutti.

inviterei comunque oregon a controllare se ho tralasciato qualcosa


__________________
www.nabbaitalia.it Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare

Ultima modifica ad opera dell'utente ant_alt il 06-10-2009 alle 15:02

Segnala ad un moderatore | IP: Collegato | Permalink

ant_alt è offline Old Post 06-10-2009 14:51
Clicca qui per vedere il profilo dell'utente ant_alt Clicca qui per inviare all'utente ant_alt un messaggio privato Visualizza ulteriori messaggi scritti dall'utente ant_alt Aggiungi l'utente ant_alt alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
MItaly
Moderatore di Programmazione



Registrato il: May 2006

Provenienza: Milano

Messaggi: 18556


ICQ :

MSN :

Skype :


codice:
int A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,zero,uno,due,tre,quattro,
    cinque,sei,sette,otto,nove,dieci;
(seguono seimila righe di codice)

Ma... usare un array?


__________________
Syntax Highlighter per tag CODE su HTML.it

No MP tecnici, posta sul forum.

Segnala ad un moderatore | IP: Collegato | Permalink

MItaly è offline Old Post 06-10-2009 15:30
Clicca qui per vedere il profilo dell'utente MItaly Clicca qui per inviare all'utente MItaly un messaggio privato Visita l'homepage dell'utente MItaly Visualizza ulteriori messaggi scritti dall'utente MItaly Aggiungi l'utente MItaly alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
ant_alt
Utente bannato



Registrato il: Feb 2004

Provenienza: 41° Parallelo

Messaggi: 2817


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da MItaly
codice:
int A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,zero,uno,due,tre,quattro,
    cinque,sei,sette,otto,nove,dieci;
(seguono seimila righe di codice)

Ma... usare un array?


per la leggibilità del codice è ovvio, ma credi sia meglio a livello di efficienza?
valuta il ciclo per azzerare l'array ogni chiamata della funzione, il ciclo ulteriore per scorrere e confrontare


__________________
www.nabbaitalia.it Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare

Segnala ad un moderatore | IP: Collegato | Permalink

ant_alt è offline Old Post 06-10-2009 15:36
Clicca qui per vedere il profilo dell'utente ant_alt Clicca qui per inviare all'utente ant_alt un messaggio privato Visualizza ulteriori messaggi scritti dall'utente ant_alt Aggiungi l'utente ant_alt alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
networkman
Utente di HTML.it



Registrato il: Oct 2009

Provenienza:

Messaggi: 11


ICQ :

MSN :

Skype :


ant_alt ...grazie per lo spuntone
...senti ma non capisco bene..come funziona il programma..

codice:
int validCode(char* string)


...ma questo sarebbe robba di puntatori?...
...capisco che ci metta molto tempo a restituirmi a video per il fatto che deve eseguire tutto il ciclo..ma se gentilmente mi potresti spiegare il perchè...o meglio come funziona il prog?

Segnala ad un moderatore | IP: Collegato | Permalink

networkman è offline Old Post 06-10-2009 15:51
Clicca qui per vedere il profilo dell'utente networkman Clicca qui per inviare all'utente networkman un messaggio privato Visualizza ulteriori messaggi scritti dall'utente networkman Aggiungi l'utente networkman alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
MItaly
Moderatore di Programmazione



Registrato il: May 2006

Provenienza: Milano

Messaggi: 18556


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da ant_alt
valuta il ciclo per azzerare l'array ogni chiamata della funzione,

... ciclo che di fatto viene eseguito lo stesso con la riga
codice:
    A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=zero=uno=due=tre=quattro=cinque=sei=sette=otto=nove=dieci=0;
,
anzi, forse addirittura in maniera meno efficiente se le variabili non sono tutte in fila in memoria; con un array la memset potrebbe azzerare il tutto il blocco sfruttando le sue conoscenze su come sia più efficiente indirizzare e scrivere la memoria (su x86 a gruppi di DWORD, se non erro).
Citazione:
il ciclo ulteriore per scorrere e confrontare

... ciclo che il compilatore, se lo ritiene conveniente, può smontare da sé (loop unrolling). Inoltre anche la riduzione delle dimensioni del codice può essere conveniente rispetto al loop unrolling, il poco codice resta tutto in cache e il tempo di accesso ad esso diminuisce.
Si può obiettare che tenendo le variabili separate il compilatore può utilizzare i registri, molto più veloci della cache e della RAM, ma dato che nell'architettura x86 i registri general-purpose sono pochi e qui le variabili sono tante il miglioramento di prestazioni derivante dall'uso dei registri per tre/quattro variabili sarebbe irrisorio.
Ma al di là di tutte queste considerazioni puramente teoriche, tieni sempre presente che "premature optimization is the root of all evil". La cosa migliore è partire da un codice che sia il più pulito e logico possibile, lasciare che l'ottimizzatore del compilatore faccia il lavoro sporco e, se serve la massima efficienza, confrontare le performance della versione pulita e di quella ottimizzata, magari facendosi aiutare da un profiler.


__________________
Syntax Highlighter per tag CODE su HTML.it

No MP tecnici, posta sul forum.

Ultima modifica ad opera dell'utente MItaly il 06-10-2009 alle 15:55

Segnala ad un moderatore | IP: Collegato | Permalink

MItaly è offline Old Post 06-10-2009 15:52
Clicca qui per vedere il profilo dell'utente MItaly Clicca qui per inviare all'utente MItaly un messaggio privato Visita l'homepage dell'utente MItaly Visualizza ulteriori messaggi scritti dall'utente MItaly Aggiungi l'utente MItaly alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
ant_alt
Utente bannato



Registrato il: Feb 2004

Provenienza: 41° Parallelo

Messaggi: 2817


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da MItaly
..


ok..
codice corretto
codice:
#include<stdio.h>
 
char box[]=
{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','q','r','s','t','u','v','w','x','y','z'};  

int cont[36];
int c1,c2;
int validCode(char* string){
                            for(c1=0;c1<36;c1++)cont[c1]=0;
    
                            for(c1=0;c1<25;c1++)
                               for(c2=0;c2<36;c2++)
                                   if(string[c1]==box[c2]) cont[c2]++;
                            
                            for(c1=0;c1<25;c1++)
                                     if(cont[c1]>4) return 0;            

    return 1;
    }
main() 

{    
      int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;
      char buf[24];     
    
    for(a = 0;a<36;a++)
    for(b = 0;b<36;b++)
    for(c = 0;c<36;c++)  
    for(d = 0;d<36;d++)  
    for(e = 0;e<36;e++)  
    for(f = 0;f<36;f++)  
    for(g = 0;g<36;g++)  
    for(h = 0;h<36;h++)  
    for(i = 0;i<36;i++)  
    for(j = 0;j<36;j++)  
    for(k = 0;k<36;k++)  
    for(l = 0;l<36;l++)  
    for(m = 0;m<36;m++)  
    for(n = 0;n<36;n++)  
    for(o = 0;o<36;o++)  
    for(p = 0;p<36;p++)  
    for(q = 0;q<36;q++)  
    for(r = 0;r<36;r++)  
    for(s = 0;s<36;s++)  
    for(t = 0;t<36;t++)  
    for(u = 0;u<36;u++)  
    for(v = 0;v<36;v++)  
    for(w = 0;w<36;w++)  
    for(x = 0;x<36;x++)  {
          sprintf(buf,"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%\n",box[a],box[b],box[c],box[d],
          box[e],box[f],box[g],box[h],box[i],box[j],box[k],box[l],box[m],box[n],box[o],box[p],box[q],
          box[r],box[s],box[t],box[u],box[v],box[w],box[x]);
if(validCode(buf))printf("%s",buf);
}
 }


ora però tu spiegalo all'utente

ps: credo ci sia qualche errore nei numeri: tipo 36, forse è errato da qualche parte


__________________
www.nabbaitalia.it Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare

Segnala ad un moderatore | IP: Collegato | Permalink

ant_alt è offline Old Post 06-10-2009 16:17
Clicca qui per vedere il profilo dell'utente ant_alt Clicca qui per inviare all'utente ant_alt un messaggio privato Visualizza ulteriori messaggi scritti dall'utente ant_alt Aggiungi l'utente ant_alt alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
networkman
Utente di HTML.it



Registrato il: Oct 2009

Provenienza:

Messaggi: 11


ICQ :

MSN :

Skype :


..va bè..ringrazio tutti ..quando andrò avanti con il C me lo riesamino da solo..

... saluti !

Segnala ad un moderatore | IP: Collegato | Permalink

networkman è offline Old Post 06-10-2009 18:10
Clicca qui per vedere il profilo dell'utente networkman Clicca qui per inviare all'utente networkman un messaggio privato Visualizza ulteriori messaggi scritti dall'utente networkman Aggiungi l'utente networkman alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
MItaly
Moderatore di Programmazione



Registrato il: May 2006

Provenienza: Milano

Messaggi: 18556


ICQ :

MSN :

Skype :


A titolo di curiosità, questo consente di calcolare tutte le combinazioni specificando arbitrariamente il set di caratteri (modificando l'array valori) e la lunghezza della stringa (modificando il #define NUMEROCIFRE).
codice:
#include <stdio.h>

#define ARRSIZE(arr)    (sizeof(arr)/sizeof(*(arr)))

#define NUMEROCIFRE 5

int main()
{
    const char valori[]= {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    char buffer[NUMEROCIFRE+1]={0};
    int stack[NUMEROCIFRE]={0};
    int cifraCorrente=0;
    for(; ; )
    {
        //Se siamo passati oltre
        if(stack[cifraCorrente]==ARRSIZE(valori))
        {
            //Torna alla cifra precedente, eventualmente esce
            if(--cifraCorrente==-1)
                break;
            //Ripete il controllo
            continue;
        }
        buffer[cifraCorrente]=valori[stack[cifraCorrente]];
        //Se siamo nel ciclo più interno stampa il risultato
        if(cifraCorrente==NUMEROCIFRE-1)
            puts(buffer);
        stack[cifraCorrente]++;
        //Passa alla cifra successiva, a meno che non siamo già all'ultima
        if(cifraCorrente<NUMEROCIFRE-1)
        {
            cifraCorrente++;
            stack[cifraCorrente]=0;
        }
    }
    return 0;    
}

Con le impostazioni in questione (alfabeto di 36 simboli, 5 lettere di lunghezza):
codice:
matteo@teoubuntu:~/cpp$ gcc -Wall -O3 combinazioni.c -o combinazioni.o
matteo@teoubuntu:~/cpp$ time ./combinazioni.o > combinazioni.txt

real	0m4.078s
user	0m2.424s
sys	0m1.380s

Di fatto quindi il calcolo effettivo impiega circa 2.42 secondi, gli 1.38 secondi di sys sono IO (e la differenza tra usr+sys e real è tempo dedicato ad altri processi). In sostanza, al netto dell'IO fa circa 25 milioni di combinazioni al secondo sul mio vecchio Athlon64 3800+.
Inizio e fine del file generato:
codice:
matteo@teoubuntu:~/cpp$ head combinazioni.txt 
00000
00001
00002
00003
00004
00005
00006
00007
00008
00009
matteo@teoubuntu:~/cpp$ tail combinazioni.txt 
zzzzq
zzzzr
zzzzs
zzzzt
zzzzu
zzzzv
zzzzw
zzzzx
zzzzy
zzzzz

Non credo che terrò combinazioni.txt per ricordo...
codice:
matteo@teoubuntu:~/cpp$ ls -lh combinazioni.txt
-rw-r--r-- 1 matteo matteo 346M 2009-10-06 22:52 combinazioni.txt
matteo@teoubuntu:~/cpp$ rm combinazioni.txt 
matteo@teoubuntu:~/cpp$ 


__________________
Syntax Highlighter per tag CODE su HTML.it

No MP tecnici, posta sul forum.

Ultima modifica ad opera dell'utente MItaly il 06-10-2009 alle 22:08

Segnala ad un moderatore | IP: Collegato | Permalink

MItaly è offline Old Post 06-10-2009 21:47
Clicca qui per vedere il profilo dell'utente MItaly Clicca qui per inviare all'utente MItaly un messaggio privato Visita l'homepage dell'utente MItaly Visualizza ulteriori messaggi scritti dall'utente MItaly Aggiungi l'utente MItaly alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
ant_alt
Utente bannato



Registrato il: Feb 2004

Provenienza: 41° Parallelo

Messaggi: 2817


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da MItaly
..


ma cos'è 346MB? i gruppi di 5?
e a gruppi di 24 quanto peserà

36^5=60.466.176 :master:


__________________
www.nabbaitalia.it Federazione Nazionale di Body Building, Fitness, Cultura sportiva, Educazione alimentare

Ultima modifica ad opera dell'utente ant_alt il 06-10-2009 alle 22:28

Segnala ad un moderatore | IP: Collegato | Permalink

ant_alt è offline Old Post 06-10-2009 22:19
Clicca qui per vedere il profilo dell'utente ant_alt Clicca qui per inviare all'utente ant_alt un messaggio privato Visualizza ulteriori messaggi scritti dall'utente ant_alt Aggiungi l'utente ant_alt alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
MItaly
Moderatore di Programmazione



Registrato il: May 2006

Provenienza: Milano

Messaggi: 18556


ICQ :

MSN :

Skype :


36^5=60.466.176 combinazioni da 5 caratteri + ritorno a capo ciascuna = 60466176*6=362797056 bytes=345,99 MiB.
Supponendo che il programma macini 25 milioni di combinazioni al secondo (non consideriamo l'IO) anche solo per "visitare" tutte le 36^24 combinazioni ci metterebbe circa 2,85*10^22 anni; se le dovesse anche scrivere, otterremmo un file di circa 1,23*10^26 TiB. Non credo che terrei neanche quello; preferisco le risposte compatte a lunghi calcoli (che so, 42 (cit.)).


__________________
Syntax Highlighter per tag CODE su HTML.it

No MP tecnici, posta sul forum.

Segnala ad un moderatore | IP: Collegato | Permalink

MItaly è offline Old Post 06-10-2009 22:39
Clicca qui per vedere il profilo dell'utente MItaly Clicca qui per inviare all'utente MItaly un messaggio privato Visita l'homepage dell'utente MItaly Visualizza ulteriori messaggi scritti dall'utente MItaly Aggiungi l'utente MItaly alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Tutte le ore sono con fuso orario CET. Ora sono le 04:38.     

  Pagine (3): [ <   1   2   3   > ]  Ultima discussione   Prossima discussione Invia una risposta
Versione per la stampa | Invia il thread via email | Ricevi aggiornamenti sul thread | Scarica il thread
 

Cerchi un argomento specifico e hai fretta? Usa il motore di ricerca