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

Programma per ricerca parole griglia

88 views
Skip to first unread message

YumaYuma

unread,
Mar 22, 2007, 2:46:32 PM3/22/07
to
Ciao a tutti,
sto cercando un programma che abbia una funzione particolare.
Ho una griglia di lettere, dalle dimensioni variabili (es. 4x4, 5x5, 7x5).
Devo trovare gruppi di tre parole all'interno di questa griglia. Posso
muovermi in tutte le direzioni, anche diagonalmente, ma posso utilizzare una
volta la stessa lettera per ogni sessione. Non per ogni parola, ma per ogni
insieme di tre parole. Mi interessa sapere quindi quali solo tutti i gruppi
di tre parole ricercabili all'interno della griglia, utilizzando le lettere
al massimo una volta. Ho provato Cross+A, ha una funzione simile, ma mi
trova *tutte* le parole all'interno della griglia... quindi se uso magari
quella più lunga, la penultima non la posso scrivere perchè una delle
lettere è già stata utilizzata... Spero che la richiesta sia abbastanza
chiara! ;-)


Roberto Montaruli

unread,
Mar 22, 2007, 3:54:19 PM3/22/07
to
YumaYuma ha scritto:
Cioe' tu vorresti risolvere una specie di PAROLIERE trovando pero'
all'interno della matrice gruppi di tre parole usando tutte lettere
distinte.

E queste parole devono essere pure limitrofe (la lettera finale di una
deve essere adiacente alla prima lettera della seconda) oppure no?

Ad ogni modo bisogna partire da una funzione che risolva la tua matrice
per una singola parola (il paroliere classico).

Poi, per ciascuna parola che trova, sostituisce alle sue lettere una
lettera neutra (es il ?) e rilancia la risoluzione su quello che resta,
trovando tutte le seconde parole, quindi analogamente lo fa per la terza.

Il tempo di elaborazione sara' piuttosto lunghetto, ma fattibile.

Non credo che esista nulla di gia' pronto.
Conviene partire da una procedura che risolva il paroliere ed adattarla
alle tue esigenze.

YumaYuma

unread,
Mar 23, 2007, 6:49:22 AM3/23/07
to
"Roberto Montaruli" <rmont...@yahoo.com> ha scritto nel messaggio
news:D9BMh.19842$6.1...@tornado.fastwebnet.it...

> YumaYuma ha scritto:
>> Ciao a tutti,
>> sto cercando un programma che abbia una funzione particolare.
>> Ho una griglia di lettere, dalle dimensioni variabili (es. 4x4, 5x5,
>> 7x5). Devo trovare gruppi di tre parole all'interno di questa griglia.
>> Posso muovermi in tutte le direzioni, anche diagonalmente, ma posso
>> utilizzare una volta la stessa lettera per ogni sessione. Non per ogni
>> parola, ma per ogni insieme di tre parole. Mi interessa sapere quindi
>> quali solo tutti i gruppi di tre parole ricercabili all'interno della
>> griglia, utilizzando le lettere al massimo una volta. Ho provato Cross+A,
>> ha una funzione simile, ma mi trova *tutte* le parole all'interno della
>> griglia... quindi se uso magari quella più lunga, la penultima non la
>> posso scrivere perchè una delle lettere è già stata utilizzata... Spero
>> che la richiesta sia abbastanza chiara! ;-)
> Cioe' tu vorresti risolvere una specie di PAROLIERE trovando pero'
> all'interno della matrice gruppi di tre parole usando tutte lettere
> distinte.

Esatto.

> E queste parole devono essere pure limitrofe (la lettera finale di una
> deve essere adiacente alla prima lettera della seconda) oppure no?

No, le parole non devono essere necessariamente limitrofe.

> Ad ogni modo bisogna partire da una funzione che risolva la tua matrice
> per una singola parola (il paroliere classico).
>
> Poi, per ciascuna parola che trova, sostituisce alle sue lettere una
> lettera neutra (es il ?) e rilancia la risoluzione su quello che resta,
> trovando tutte le seconde parole, quindi analogamente lo fa per la terza.

Bravo, è proprio quello che intendo. Trova la prima parola, "cancella" le
lettere della prima parola, e trova la seconda. Ancora così fino alla terza.
Poi mi classifica i risultati secondo le lettere utilizzate, mi interessa il
gruppo di tre parole che utilizza più lettere possibili.

> Il tempo di elaborazione sara' piuttosto lunghetto, ma fattibile.
>
> Non credo che esista nulla di gia' pronto.
> Conviene partire da una procedura che risolva il paroliere ed adattarla
> alle tue esigenze.

Tu sei un programmatore? Potresti realizzare qualcosa del genere, ovviamente
con compenso?


Giovanni Resta

unread,
Mar 23, 2007, 6:56:50 AM3/23/07
to
YumaYuma wrote:

> Tu sei un programmatore? Potresti realizzare qualcosa del genere, ovviamente
> con compenso?

Beh, e' facilino.
In mezzora = 50 euro te lo posso fare :-)
purche' non sia un compitino di scuola,
nel qual caso ti devi arrangiare.

g.

YumaYuma

unread,
Mar 23, 2007, 7:03:24 AM3/23/07
to
"Giovanni Resta" <g.res...@cutTheXXXiit.cnr.it> ha scritto nel messaggio
news:eu0bmp$n9u$1...@news.cineca.it...

Ciao Giovanni,
no la scuola l'ho già finita da un pezzo ;-)
A che indirizzo e-mail posso scriverti?


Giovanni Resta

unread,
Mar 23, 2007, 8:06:22 AM3/23/07
to
YumaYuma wrote:

> Ciao Giovanni,
> no la scuola l'ho gią finita da un pezzo ;-)


> A che indirizzo e-mail posso scriverti?

g.resta /chiocciola/ iit.cnr.it

ma solo se puoi aspettare almeno fino a domenica.

Prima ho da fare.
(E' vero che di "testa" ci vuole una
mezzora, siccome ho gia' fatto cose simili
e posso riciclare del codice,
ma per mettere a posto i piccoli dettagli
stupidi e noiosi tipicamente ci vuole un po' di piu')

Se qualcuno altro si offre gli cedo volentieri
il posto e gli do pure consigli "agratis" su come fare
il programma...

La cosa che mi lascia perplesso e' perche'
uno sia addirittura disposto a pagare
per risolvere un problema simile.

g.

PS. Chiunque mi scriva in privato e'
pregato di firmarsi con nome e cognome,
non come BingoBongo, YumaYuma, Gattina2, etc.etc.

YumaYuma

unread,
Mar 23, 2007, 10:17:32 AM3/23/07
to
"Giovanni Resta" <g.res...@cutTheXXXiit.cnr.it> ha scritto nel messaggio
news:eu0fp7$oqd$1...@news.cineca.it...

> YumaYuma wrote:
>
>> Ciao Giovanni,
>> no la scuola l'ho gią finita da un pezzo ;-)
>> A che indirizzo e-mail posso scriverti?
>
>
> ma solo se puoi aspettare almeno fino a domenica.
>
> Prima ho da fare.
> (E' vero che di "testa" ci vuole una
> mezzora, siccome ho gia' fatto cose simili
> e posso riciclare del codice,
> ma per mettere a posto i piccoli dettagli
> stupidi e noiosi tipicamente ci vuole un po' di piu')
>
> Se qualcuno altro si offre gli cedo volentieri
> il posto e gli do pure consigli "agratis" su come fare
> il programma...
>
> La cosa che mi lascia perplesso e' perche'
> uno sia addirittura disposto a pagare
> per risolvere un problema simile.
>
> g.

Ciao, ti ho scritto in privato!
Come gią accennato, visto che non sono riuscito a trovare niente del genere
su Internet nč ho le conoscenze necessarie per programmarlo, non credo di
avere altra alternativa che chiederlo a qualcuno! Certo non ci spenderei 200
euro ;-)


Roberto Montaruli

unread,
Mar 23, 2007, 2:06:33 PM3/23/07
to
YumaYuma ha scritto:

>
> Ciao, ti ho scritto in privato!
> Come già accennato, visto che non sono riuscito a trovare niente del genere
> su Internet nè ho le conoscenze necessarie per programmarlo, non credo di
> avere altra alternativa che chiederlo a qualcuno! Certo non ci spenderei 200
> euro ;-)

Rientro in questa interessante discussione, un po' OT, ma neanche tanto.

Un qualsivoglia programma di risoluzione del gioco del paroliere e sue
varianti (come quella richiesta) si deve necessariamente appoggiare ad
un dizionario, ovvero ad un elenco di parole valide per la risoluzione
del gioco.

Il programma poi si limita a verificare quali parole di questo elenco
sono presenti nella matrice di lettere.

Per cui la domanda e': questo elenco c'e' gia'?
Perche' senza di questo elenco, il programma non puo' funzionare.

Il resto e' un divertente esercizio di programmazione.

YumaYuma

unread,
Mar 23, 2007, 2:43:39 PM3/23/07
to
"Roberto Montaruli" <rmont...@yahoo.com> ha scritto nel messaggio
news:AGUMh.21440$6.1...@tornado.fastwebnet.it...

Beh certo, ma questo credo fosse scontato! Il programma deve attingere le
parole "valide" da un dizionario in formato testuale. Se ne può utilizzare
uno scaricato da Internet, fosse quello per me il problema!


Roberto Montaruli

unread,
Mar 23, 2007, 3:13:47 PM3/23/07
to
YumaYuma ha scritto:

Nelle specifiche di programmazione sono abituato a non dare mai nulla
per scontato, avendo quotidianamente a che fare con implementazioni
specificate a spanne sulle quali devo dare delle tempistiche.

In che ambiente dovrebbe girare questa procedura?


YumaYuma

unread,
Mar 24, 2007, 8:01:41 AM3/24/07
to
"Roberto Montaruli" <rmont...@yahoo.com> ha scritto nel messaggio
news:CFVMh.21546$6.9...@tornado.fastwebnet.it...

> YumaYuma ha scritto:
>> "Roberto Montaruli" <rmont...@yahoo.com> ha scritto nel messaggio
>> news:AGUMh.21440$6.1...@tornado.fastwebnet.it...
>
>
> Nelle specifiche di programmazione sono abituato a non dare mai nulla per
> scontato, avendo quotidianamente a che fare con implementazioni
> specificate a spanne sulle quali devo dare delle tempistiche.
>
> In che ambiente dovrebbe girare questa procedura?

Windows.


Roberto Montaruli

unread,
Mar 24, 2007, 6:58:57 PM3/24/07
to
YumaYuma ha scritto:
> "Roberto Montaruli" <rmont...@yahoo.com> ha scritto nel messaggio
> news:CFVMh.21546$6.9...@tornado.fastwebnet.it...
>> YumaYuma ha scritto:
>>> "Roberto Montaruli" <rmont...@yahoo.com> ha scritto nel messaggio
>>> news:AGUMh.21440$6.1...@tornado.fastwebnet.it...
>>
>> Nelle specifiche di programmazione sono abituato a non dare mai nulla per
>> scontato, avendo quotidianamente a che fare con implementazioni
>> specificate a spanne sulle quali devo dare delle tempistiche.
>>
>> In che ambiente dovrebbe girare questa procedura?
>
> Windows.
>

Ho riesumato una mia vecchia procedura per risolvere il gioco del
paroliere e sto provando ad adattarla al tuo problema.

Si dovrebbe poter fare, ma c'e' un problema che non ero riuscito a
risolvere neanche a suo tempo.

La procedura e' ricorsiva ed esaustiva.
Ovvero trova tutte le disposizioni possibili di tutte le parole di un
file dizionario all'interno di una griglia MxN di paroliere.

Vale a dire che se una certa parola, diciamo "CAVALLO" e' presente piu'
volte nello schema, o e' ottenibile prendendo le lettere ripetute in
ordine diverso, questa procedura le considera comunque soluzioni possibili.

Paradossalmente nel tuo caso questa cosa torna utile, perche' magari se
la parola fosse ottenibile in due modi diversi, ma se presa nel secondo
dei due modi, restano libere altre lettere strategiche per formare altre
due parole lunghe, la cosa funziona.

Di questa procedura ho il sorgente in linguaggio C.

Cerco di adattarla alla tua esigenza, e vedo che cosa salta fuori.

htrl

unread,
Mar 25, 2007, 7:47:42 AM3/25/07
to

"Roberto Montaruli" <rmont...@yahoo.com> ha scritto nel messaggio
news:I2iNh.23669$6.1...@tornado.fastwebnet.it...

Mi intrometto anche se è un po' OT...
Un annetto fa ho scritto un dizionario (in C) un po' particolare per fare
delle ricerche particolari da usare soprattutto come aiuto per risolvere
rebus (di cui mio papà, una conoscenza di Giovanni, è un appassionato
risolutore) tuttavia ho sempre avuto molti problemi a trovare un dizionario
completo.
In particolare ho trovato difficoltà a trovare tutti i verbi già coniugati
in tutti i possibili modi. Nella versione attuale sono arrivato ad avere
circa 700.000 parole tuttavia per come l'ho creato al suo interno ci sono
alcune parole che non sono italiane ma latine o di altre lingue, il che crea
molti problemi. Ho anche altre liste molto più limitate ma corrette.
Ovviamente mettersi a passare il file a mano controllando tutte le parole è
impraticabile.
Qualcuno sa dove posso trovare un dizionario completo ?
Un'altra caretteristica che mi interesserebbe serebbe avere una lista parole
che permetta di distinguere tra nomi, verbi, aggettivi, ecc (cosa che per la
risoluzione di rebus sarebbe molto interessante).
Per quanto riguarda questo problema penso che il codice non sia
complicatissimo da scrivere semmai potrebbe essere difficile rendere i tempi
di esecuzioni accettabili (soprattutto se il dizionario è molto ampio)


giovanni resta

unread,
Mar 25, 2007, 4:40:05 PM3/25/07
to
htrl wrote:

> Mi intrometto anche se è un po' OT...

> Qualcuno sa dove posso trovare un dizionario completo ?

Purtroppo no. E anche dove trovare un lemmario (quindi
parole classificate per categoria: nomi, verbi, avverbi, etc.)
mi sfugge. Alcuni anni fa ero quasi riuscito a farmelo
dare da dei ricercatori di linguistica computazionale, ma
poi per complicazioni nella mia vita non ho battuto il ferro
finche' era caldo...

> Per quanto riguarda questo problema penso che il codice non sia
> complicatissimo da scrivere semmai potrebbe essere difficile rendere i tempi
> di esecuzioni accettabili (soprattutto se il dizionario è molto ampio)

Non era complicatissimo, ma avendolo finito e consegnato a YumaYuma,
posso dire di averci messo ben piu' della mezzora che avevo "sparato".
Anche perche' in corso d'opera sono state introdotte delle varianti
che hanno complicato ulteriormente la faccenda (per esempio,
il fatto che fosse accettabile anche una soluzione con 1 o 2 parole
invece di 3 ed un meccanismo di punteggio dipendente sia dalla
lunghezza sia dalle lettere)

ciao,
g.

Roberto Montaruli

unread,
Mar 26, 2007, 9:14:04 AM3/26/07
to
"giovanni resta" <g.res...@CUTiit.cnr.it> wrote in message
news:4606de2b$0$10627$4faf...@reader2.news.tin.it

> Non era complicatissimo, ma avendolo finito e consegnato a YumaYuma,
> posso dire di averci messo ben piu' della mezzora che avevo "sparato".
> Anche perche' in corso d'opera sono state introdotte delle varianti
> che hanno complicato ulteriormente la faccenda (per esempio,
> il fatto che fosse accettabile anche una soluzione con 1 o 2 parole
> invece di 3 ed un meccanismo di punteggio dipendente sia dalla
> lunghezza sia dalle lettere)

Per la ricerca della seconda e della terza parola, sei ripartito
dall'inizio del dizionario oppure dal punto in cui eri?
Perche' mi sono posto il problema e non sono riuscito a darmi una
risposta certa.

Intuitivamente sembrerebbe che, una volta collocata la prima parola, per
cercare la seconda dovrei memorizzare la posizione nel file dizionario e
provarle tutte da dove sono arrivato fino alla fine, senza partire ogni
volta dall'inizio, ma poi con la terza parola da cercare, mi sono sorti
dei dubbi.

Questo aspetto rientrerebbe in topic perche' potrebbe essere
considerato, a ragione, un enigma di logica.

--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

Giovanni Resta

unread,
Mar 26, 2007, 10:04:59 AM3/26/07
to
Roberto Montaruli wrote:

> Per la ricerca della seconda e della terza parola, sei ripartito
> dall'inizio del dizionario oppure dal punto in cui eri?
> Perche' mi sono posto il problema e non sono riuscito a darmi una
> risposta certa.

non saprei. Io non cerco le parole in un ordine.
Sostanzialmente parto da una lettera (quindi ripeto la
ricerca per ogni lettera di partenza) e ricorsivamente
costruisco una stringa percorrendo le lettere disponibili.
Ad ogni passo che faccio controllo se quello che ho
ottenuto e' un possibile prefisso di parola:
se non lo e' allora posso abbandonare questo ramo.
Se e' un prefisso possibile allora controllo se
e' anche una parola.
Se non e' una parola allora invoco la procedura ricorsivamente
per andare avanti cioe' ad aggiungere una nuova lettera alla stringa
corrente, altrimenti, se e' una parola, allora
mi segno che punteggio fa e poi, se non e' la terza di
un set di parole, invoco un'altra ricerca (per la seconda o terza
parola) sulle lettere rimanenti.

per evitare (almeno parzialmente) di generare le stesse triple
piu' e piu' volte, impongo che le 3 parole
abbiano lunghezze non crescenti.
Cioe' se la prima ricerca ha fornito una parola
lunga 8 caratteri allora la seconda parola impongo
che abbia una lunghezza al massimo 8.

Sicuramente si puo' fare di meglio, ma cercavo
qualcosa che funzionasse in tempi ragionevoli
senza doverci perdere tutto il weekend...

Anche la raccolta delle, diciamo 50, soluzioni
migliori puo' presentare qualche problema di efficienza.

ciao,
g.


Roberto Montaruli

unread,
Mar 26, 2007, 11:26:12 AM3/26/07
to
"Giovanni Resta" <g.res...@cutTheXXXiit.cnr.it> wrote in message
news:eu8jre$60o$1...@news.cineca.it

> Roberto Montaruli wrote:
>
> > Per la ricerca della seconda e della terza parola, sei ripartito
> > dall'inizio del dizionario oppure dal punto in cui eri?
> > Perche' mi sono posto il problema e non sono riuscito a darmi una
> > risposta certa.
>
> non saprei. Io non cerco le parole in un ordine.
> Sostanzialmente parto da una lettera (quindi ripeto la
> ricerca per ogni lettera di partenza) e ricorsivamente
> costruisco una stringa percorrendo le lettere disponibili.
> Ad ogni passo che faccio controllo se quello che ho
> ottenuto e' un possibile prefisso di parola:
> se non lo e' allora posso abbandonare questo ramo.

CUT

Ah! Ho capito.
Io invece avevo sviluppato una procedura con un approccio opposto.
Parto dal dizionario.
Prendo la parola successiva.
Cerco nella griglia se c'e' l'iniziale.
Se non trovo l'iniziale, la parola non c'e'.
Se trovo l'iniziale, allora parto dall'iniziale e cerco la seconda
lettera nelle 8 caselle intorno, se la trovo cerco la terza nelle 8
caselle intorno a questa etc...
Naturalmente flaggando le lettere gia' uscite.
Alla fine della ricorsione o ho trovato tutte le lettere e allora ho una
soluzione, oppure ad un certo punto non trovo la lettera successiva e
allora la parola non c'e'.

In termini di efficenza non saprei dire quale dei due metodi sia piu'
valido.
Pero' col mio metodo si migliora in efficienza se le parole nel
dizionario sono memorizzate dalla piu' lunga alla piu' corta piuttosto
che in ordine alfabetico.

cardinale Albornoz

unread,
Mar 28, 2007, 4:04:21 PM3/28/07
to
non è proprio quello che stai cercando,
ma magari può servirti...

http://www.evolinfo.it/paroliere/super.html

saludos


"YumaYuma" <yu...@yu.ma> ha scritto nel messaggio
news:4602ce73$0$808$4faf...@reader5.news.tin.it...

0 new messages