|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2002
Messaggi: 442
|
[PHP] Funzione ricorsiva?
Ciao,
vi espongo brevemente il problema. Ho una matrice di 25 elementi (5*5) riempiti casualmente con 25 lettere. Partendo da un elemento a scelta della matrice sono arrivato a trovare le sue adiacenze e di queste considerare solo quelle "valide" tramite una funzione che controlla su un dizionario (scarto in pratica quelle che non corrispondono alla parte iniziale di qualche parola; es.: se l'elemento di partenza è A e le sue adiacenze sono B, C, W prendo in considerazione solo le prime due perché non esiste nessuna parola nel dizionario che inizi per AW). Aggiorno la parola (A => AB => ABC) e vado avanti con la prima adiacenza valida dell'ultimo elemento. Mi interrompo inoltre quando non esistono parole più lunghe che iniziano con il troncone formato (es.: mi fermo ad AB[primaadiacenzadiB] se è una parola finita). Al momento considero solo la prima di quelle valide e quindi inserendo il tutto in un for (;;) che si interrompe quando non esistono più adiacenze valide e inutilizzate o quando la parola è completa. Vorrei mettere in parallelo il tutto e procedere per ogni adiacenza dell'adiacenza in modo ricorsivo e così via. In pratica: Codice:
$x = "1"; $y = "1"; for (;;) { $parola = $matrice[$x][$y]; $matrice[$x][$y] = ""; $adiacenze_valide = adiacenze_valide ($x, $y); // ARRAY o EXIT se non ci sono while (count ($adiacenze_valide > 0)) { switch ($i) { case 0: $x = ($x-1); $parola .= $adiacenze_valide($i); echo $parola; break; case 1: ... case 2: ... } unset $adiacenze_valide($i); } if check_parola ($parola) { echo "Parola completa: $parola"; exit; } } Grazie dell'attenzione
__________________
- |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Messaggi: 442
|
Un esempio forse vale più di un discorso:
http://www.nicolasantilli.net/paroliere.php?x=3&y=3 Si possono cambiare a piacere le coordinate (tenendo conto che sono invertite rispetto alla "visione" tradizionale). Al momento prende in considerazione solo la prima valida in un ciclo infinito che si interrompe quando la parola è completa. Dovrei prendere in considerazione ogni elemento valido e di questo ogni elemento valido ancora ogni elemento finché la parola non è completa. Per tanto, si potrebbero trovare più parole.
__________________
- |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:50.