PDA

View Full Version : T9 e pazzia


-Ivan-
18-05-2004, 16:14
Devo simulare il t9.
Il linguaggio non ha importanza mi serve per ora capirne l'algoritmo.

Avendo un file con tutti i vocaboli, pensavo alla pressione di un tasto di effettuare una ricerca sul file, memorizzando in una matrice di char le combinazioni derivate dalla pressione dei tasti, avendo ogni tasto 3 o 4 lettere. La ricerca mi controllerebbe se su file esiste o meno una parola contenente le stesse lettere di ogni riga della matrice e in caso lo trovasse mi stamperebbe sullo schermino del cellulare quella corrispondente.

Ho saltato alcune cose ed ho postato solo il succo, ovviamente queta parte da sola non puo funzionare ma come strada per realizzarlo puo essere quella giusta?


Sto impazzendooooooo :muro: :oink: :mc: :cry: :D :( :mad: :muro:

McK
18-05-2004, 17:15
si + o meno sei sulla strada giusta. Ti rispiego con altre parole il funzionamento così magari ti chiarisci i dubbi! :D
Ad ogni tasto del cellulare sono associate 3 o 4 lettere, quindi alla pressione del primo tasto vai a selezionare le parole che cominciano con una di quelle 3 lettere (o 4) che hanno lunghezza 1 (tipicamente mostra la vocale, nel caso non ne trovi nessuna con una di quelle tre lettere con lunghezza 1, mostri la prima lettera associata al tasto). Quando premi il secondo tasto vai a selezionare tutte le parole di lunghezza 2 caratteri che puoi ottenere attraverso le combinazioni dei due tasti che hai premuto. In pratica puoi memorizzarti ogni volta i tasti premuti (ai quali sai essere associate delle lettere), ti costruisci un array con tutte le combinazioni ottenibili dai due tasti premuti, e fai una query sul tuo file in modo da tenere solo le combinazioni accettate.

EX.
1) PREMI 2: A-B-C (ti mostra la A)
2) PREMI 4: G-H-I
Otterrai:
AG-AH-AI-BG-BH-BI-CG-CH-CI
Fai una ricerca nel file vocaboli e mostri la parola di senso compiuto di lunghezza due (le altre combinazioni le tieni, perchè potrebbero essere parte di una parola + lunga)
Mostra: AI (prima parola di senso compiuto, altra disponibile CI)
3) PREMI 2: A-B-C
Combinazioni
........ CIA
Cerchi e mostri la prima di senso comiuto e ti memorizzi le altre di senso compiuto con 3 lettere (da mostrare se viene richiesto di cambiare parola)
4) PREMI 6:M-N-O
Combinazioni: ...... CIAO
Mostri: CIAO

Le combinazioni o te le porti appresso tutte ogni volta... oppure vai a controllare che non appartengano a nessuna parola di senso compiuto del tuo dizionario, e quindi le scarti. Questo metodo è + oneroso in termini di calcolo inziale ma occupa molta meno memoria e hai meno combinazioni da fare ogni volta.
EX verifichi che in tutto il dizionario non ci sia nessuna parola che comincia con CG, la togli dal tuo array evitando 3 combinazioni alla pressione del tasto dopo, e 9 alla pressione del tasto ancora dopo. QUindi perdi tempo nel cercare, ma eviti calcoli e spreco di memoria.

Personalmente ti consiglio una bella gestione della memorizzazione del dizionario, che so una sorta di albero, in modo da semplificare la ricerca delle parole ammesse! ;)

Buon lavoro, McK

cionci
18-05-2004, 18:04
Originariamente inviato da McK
Personalmente ti consiglio una bella gestione della memorizzazione del dizionario, che so una sorta di albero, in modo da semplificare la ricerca delle parole ammesse! ;)

Sì...direi che l'albero sia la soluzione migliore...
Il percorso fatto sull'albero deve venire identificato dai numeri premuti...ad ogni nodo ci deve essere una lista di tutte le parole corrispondenti a quella sequenza di numeri...
Quindi ti conviene caricare le parole del vocabolario in questa struttura dati (lo puoi fare automaticamente) perchè la ricerca diretta sarebbe immane da realizzare...

-Ivan-
18-05-2004, 19:56
Grazie a tutti ora comincio a pensare un po al codice anche se credo che avro qualche problema con i file visto che in c# non li ho mai usati e la sintassi mi sembra che sia molto diversa dal c++.
Grazie.

McK
18-05-2004, 20:32
si certo... considera che c# la microsoft lo ha fatto come antagonista del java, quindi è un linguaggio orientato al web.
Cmq con la sintassi sotto mano e qualche esempio non dovresti avere grossi problemi

Ciao, McK

-Ivan-
18-05-2004, 20:36
Originariamente inviato da McK
si certo... considera che c# la microsoft lo ha fatto come antagonista del java, quindi è un linguaggio orientato al web.
Cmq con la sintassi sotto mano e qualche esempio non dovresti avere grossi problemi

Ciao, McK


E' l'unico linguaggio che conosco con cui riesco a creare maschere inoltre i prof vogliono che usiamo c#.
Per gli esempi confido su google.:D

goma
01-06-2004, 15:36
T9 e pazzia mi fa venire in mente questo:

http://forum.gsmhosting.com/vbb/showthread.php?t=86823&highlight=M50

e

http://www.forumcommunity.net/?act=ST&f=58198&t=630762&c=3784

cionci
01-06-2004, 20:25
Attenzione che il T9 è coperto da copyright...con la nuova legge europea non potersti svilupparlo !!! :D