Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Tool per generare parole a partire da un numero di lettere

1,786 views
Skip to first unread message

Davide

unread,
May 10, 2008, 7:00:37 AM5/10/08
to
Ciao,
volevo sapere se qualcuno sa se esiste già un tool per la generazione
di parole partendo da un insieme di lettere.

Per esempio: date le lettere U R O T A T posso formare le parole
"TUO", "URTO", "TORTA", "ROTTA",etc...

Si tratta quindi di trovare prima tutte le parole che si possono
formare e poi confrontarle con una lista in un vocabolario per vedere
se sono accettate o meno.

Le parole che si possono formare sono le disposizioni semplici sul
numero di lettere dato:

numero possibili parole con 3 lettere = Disposizizione di 3 su 6 120
numero possibili parole con 4 lettere = DIsposizione di 4 su 6 = 360
.........


grazie

Marco Gavanelli

unread,
May 16, 2008, 11:03:23 AM5/16/08
to
Davide wrote:
> Ciao,
> volevo sapere se qualcuno sa se esiste già un tool per la generazione
> di parole partendo da un insieme di lettere.
>
> Per esempio: date le lettere U R O T A T posso formare le parole
> "TUO", "URTO", "TORTA", "ROTTA",etc...
>
> Si tratta quindi di trovare prima tutte le parole che si possono
> formare e poi confrontarle con una lista in un vocabolario per vedere
> se sono accettate o meno.

Beh, se usi un linguaggio adatto, la cosa e` molto semplice. Ad esempio,
in Prolog sono poche righe di codice. Questo e` il codice nel linguaggio
ECLiPSe Prolog:

parole(Lettere,Parola):-
atom_list(Lettere,Y),
sottolista(X,Y),
atom_list(Parola,X),
dato(Parola).

% Trova le possibili sottoliste
sottolista([],_).
sottolista([E|T],S) :- delete(E,S,R),
sottolista(T,R).

% Converte una parola in lista di lettere ...
atom_list(A,L) :-
nonvar(A), !,
atom_string(A,S),
string_list(S,L).
% ... e viceversa (da lista di lettere a parola)
atom_list(A,L) :-
string_list(S,L),
atom_string(A,S).

poi devi aggiungere le parole da un dizionario:

dato(precipitevolissimevolmente).
dato(polidesossiribonucleotide).
dato(polidesossiribonucleotidi).
dato(autoblindomitragliatrice).
...

basta scaricarsi un dizionario di parole di Italiano (ad esempio quello
che viene dato nei correttori ortografici open-source) e poi metterlo in
sintassi Prolog con un editor qualunque.

Questo e` il risultato:

[eclipse 27]: parole(urotat,X).

X = urto
Yes (0.00s cpu, solution 1, maybe more) ? ;

X = urta
Yes (0.00s cpu, solution 2, maybe more) ? ;

X = urtato
Yes (0.00s cpu, solution 3, maybe more) ? ;

X = urato
Yes (0.00s cpu, solution 4, maybe more) ? ;

X = urato
Yes (0.00s cpu, solution 5, maybe more) ? ;

X = urto
Yes (0.00s cpu, solution 6, maybe more) ? ;

X = urta
Yes (0.00s cpu, solution 7, maybe more) ? ;

X = urtato
Yes (0.00s cpu, solution 8, maybe more) ? ;

X = ruota
Yes (0.07s cpu, solution 9, maybe more) ? ;

....

Ci sono un po' di parole ripetute; cambiando un po' il codice si possono
eliminare.

Ciao,
Marco

--
http://www.ing.unife.it/docenti/MarcoGavanelli/

Sbrecche

unread,
May 26, 2008, 4:34:34 PM5/26/08
to

> Ciao,
> volevo sapere se qualcuno sa se esiste già un tool per la generazione
> di parole partendo da un insieme di lettere.
>
> Per esempio: date le lettere U R O T A T posso formare le parole
> "TUO", "URTO", "TORTA", "ROTTA",etc...

<cut>

Se ho ben capito, prova a dare un'occhiata a Verbatron. Si trova
gratuitamente qui:
http://www.imc.pi.cnr.it/resta/verba.html

DavideN

unread,
Jun 4, 2008, 3:22:25 AM6/4/08
to
Alla fine infatti ero arrivato anche io a "Verbatron" e devo dire che
e' fatto molto bene...

grazie

0 new messages