PDA

Visualizza la versione completa : [Python/others] Come è possibile creare un programma Wordlist maker??


shuttle15
07-01-2013, 15:20
Ciao, vorrei creare un programma/script in grado di creare dei file "Dizionario"
cioè una cosa del genere:

Caratteri da usare (senza spazio e/o separatori)?
ab
Lunghezza minima
1
Lunghezza massima
2

ed in output vorrei ottenere:
a
b
aa
ab
ba
bb

è possibile??

MdE2005
07-01-2013, 17:06
è possibile??

Certo, e la complessità dell'algoritmo è proporzionale al numero massimo di caratteri possibili.
In generale, per non crearsi troppi problemi è sufficiente creare un vettore, i cui elementi contengono i caratteri da inserire nel dizionario; basta poi implementare dei cicli for/next ed il gioco è fatto.
Un esempio in pseudocodice:


vettore(4) = [ab12] //vettore di 4 elementi, "a", "b", "1", "2"
for (i=0, i = dimensionevettore-1, i++)
{
SCRIVI vettore[i] //scrive i singoli caratteri
}

for (i=0, i = dimensionevettore-1, i++)
{
for (k=0, k = dimensionevettore-1, k++)
{
SCRIVI vettore[i] & vettore[k]
}
}


Se il numero massimo di caratteri è variabile, allora l'algoritmo ovviamente deve essere diverso.

shuttle15
07-01-2013, 22:49
Originariamente inviato da MdE2005
Se il numero massimo di caratteri è variabile, allora l'algoritmo ovviamente deve essere diverso.

Si, come in esempio vorrei che il programma mi chiedesse di digitare tutti i caratteri da usare e poi inserire le dimensione minima e massima delle parole da generare

MdE2005
07-01-2013, 22:56
Originariamente inviato da shuttle15
Si, come in esempio vorrei che il programma mi chiedesse di digitare tutti i caratteri da usare e poi inserire le dimensione minima e massima delle parole da generare

Perfetto, allora devi cercare un algoritmo di permutazioni, grande capitolo della Matematica Combinatoria.
Ovviamente esistono già soluzioni già studiate, collaudate ed ottimizzate, come per esempio questo (http://brutuswolf.altervista.org/blog/2011/06/23/cgeneratore-dizionari-brute-force/): si tratta di un esempio per C++, ma che puoi benissimo 'tradurre' nel tuo linguaggio preferito.

Ciao :)

Loading