Spetta un attimo... ma tu questo procedimento lo faresti per ogni parola nel dizionario e per ognuna delle 16 celle?Io non capisco dove sia la pesantezza della mia soluzione: mi esprimo meglio.
Faccio all'inizio un controllo sulla scacchiera: ci sono 16 posti, nel worst case ho 16 lettere differenti-->posso già escludere 10/26 di dizionario dato che non vado neanche a cercare le parole che iniziano con lettere non contenute in scacchiera.
Per il resto scorro il dizionario (senza salvarlo da nessuna parte) e, quando sono in presenza di una parola che inizia con una delle 16 lettere presenti in tabella, chiamo la funzione ricorsiva che non sarà una brute force. Ci saranno dei controlli step to step che la renderanno enormemente più efficiente di una brute force.
Es: cerco CASA. Chiamo la funzione cerca sulla prima casella: è C? No. Bene vado avanti senza cercare alcun chè. Trovo una C in un'altra casella: ho una A in posizione adiacente? No-->non cerco neanche / Si--> mi sposto sulla casella dove c'è la A e controllo se c'è una S. Se non c'è termino la ricerca. Non andrò a fare una brute force che ogni volta calcola tutti i possibili percorsi in scacchiera.
Facendo in questo modo la memoria occupata è trascurabile rispetto ai 15MB circa che ci andrebbero per l'albero (non userei nemmeno 500KB), eviterei molte operazioni (e quindi tempo) legate alla creazione dell'alberlo ed all'allocazione della memoria ad esso destinata e farei poche ricerche, solo quelle necessarie, che dovrei fare comunque sia anche se avessi un albero.
Mi spiegheresti gentilmente perchè credi che questa soluzione (che mantiene tempi accettabili, considerando anche il tempo che ci vorrebbe a creare l'albero, e consumando quasi zero memoria) non sia competitiva?
Grazie in anticipo
Non capisco... nell'esempio di "casa", se arrivi a verificare "cas" ma al quarto posto non trovi una "a" ma una "o", annulli tutto o consideri valido "caso" (con la "o")?
Mi pare comunque un approccio lentino. Oltre al fatto che se non vuoi caricarti il dizionario in memoria, devi accedere al file continuamente...