Sto facendo un gioco di parole simile a boggle. L'utente riceve una griglia di lettere simili:Algoritmo per scegliere lettere casuali per il gioco di ricerca di parole che consente di scrivere molte parole
O V Z W X
S T A C K
Y R F L Q
L'utente sceglie una parola utilizzando qualsiasi catene adiacenti di lettere, come la parola "STACK" attraverso la linea di mezzo. Le lettere utilizzate vengono quindi sostituite dalla macchina, ad es. (nuove lettere in minuscolo):
O V Z W X
z e x o p
Y R F L Q
Avviso è ora possibile incantesimo "troppo pieno", utilizzando le nuove lettere. Il mio problema è: quale algoritmo posso utilizzare per selezionare nuove lettere che massimizzano il numero di parole lunghe che l'utente può pronunciare? Voglio che il gioco sia divertente e coinvolga l'ortografia, ad es. Parole a 6 lettere a volte ma, se scegli lettere sbagliate, i giochi coinvolgono solo l'ortografia di 3 lettere e non riescono a trovare parole più grandi.
Ad esempio:
Si può solo scegliere a caso le nuove lettere dell'alfabeto. Questo non funziona bene.
Allo stesso modo, ho trovato la scelta casuale ma utilizzando le frequenze lettera di Scrabble non ha funzionato bene. Funziona meglio in Scrabble, penso che tu sia meno vincolato all'ordine in cui usi le lettere.
Ho provato ad avere una serie di elenchi, ognuno dei quali rappresenta uno degli stampi del gioco Boggle e ogni lettera sarebbe scelto da un lato del dado casuale (mi chiedo anche se posso usare legalmente questi dati in un prodotto). Non ho notato che funziona bene. Immagino che i lati dei dadi di Boggle siano stati scelti in modo ragionevole, ma non riesco a trovare come è stato fatto.
Alcune idee che ho in considerazione:
Fai un tavolo di quanto spesso si verificano insieme coppie di lettere nel dizionario. Per amor di discussione, dì che E è visto accanto ad A il 30% delle volte. Quando scegli una nuova lettera, selezionerei casualmente una lettera in base alla frequenza di questa lettera che si verifica accanto a una lettera adiacente scelta casualmente sulla griglia. Ad esempio, se la lettera vicina era E, la nuova lettera sarebbe "A" il 30% delle volte. Il che dovrebbe significare che ci sono molte coppie decenti da usare sparse per la mappa. Potrei forse migliorare questo facendo delle tabelle di probabilità di una lettera che si verificano tra due altre lettere.
In qualche modo effettuare una ricerca per quali parole possono essere digitate sulla griglia corrente, prendendo le nuove lettere come caratteri jolly. Sostituirei i caratteri jolly con lettere che permettevano di scrivere le parole più grandi. Non sono sicuro di come lo faresti in modo efficiente comunque.
Altre idee sono apprezzate. Mi chiedo se esiste un modo comune per risolvere questo problema e quali altri giochi di parole utilizzano.
Modifica: Grazie per le grandi risposte finora! Ho dimenticato di menzionare, sto puntando molto a requisiti di memoria bassa/CPU, se possibile, probabilmente userò il dizionario SOWPODS (circa 250.000) e la mia griglia sarà 6 x 6.
Mi piace l'idea di utilizzare le probabilità di giustapposizione delle lettere. Potresti espanderlo ulteriormente: per ogni posizione di una determinata lettera, calcola la probabilità che ogni lettera sia adiacente alle sue lettere immediatamente circostanti e media queste probabilità in una sola, quindi scegli una lettera casuale usando le probabilità medie come pesi. – Cameron