Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-05-2005, 09:49   #1
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
[JAVA] Avete un'idea come risolvere questo problema?

Allora, mi sono trovato davanti una traccia che chiede di implementare un package puzzle, che prende da file un insieme di lettere messe stile matrice:

Esempio:

Codice:
A C P A S
A P O C S
F R E W A
C O P E O
S L I W Q
E poi prende sempre da file un "dizionario", che contiente una lista di parole.

Un metodo risolvi() accetta una parola del dizionario e deve cercarla nella matrice di lettere a partire da tutte le posizione e verso tutte le direzioni (Una sorta del classico giochino da settimana enigmistica) ...questo metodo risolvi() dovrebbe una volta trovata la parola, restituirla unita alle cordinate della lettera di partenza e alla direzione in cui questa parola si estende.

Esempio:

Codice:
A C P A S
A P O C S
F R E W A
C O P E O
S L I W Q

E' presente la parola APE a partire dalla coordinata <0,0> e si estende verso SUD-EST...
In pratica il mio problema è proprio questo maledetto metodo risolvi()!! Come diavolo potrei farlo?

Grazie in anticipo a chiunque vorrà darmi una mano
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2005, 13:13   #2
niko0
Senior Member
 
L'Avatar di niko0
 
Iscritto dal: Feb 2003
Città: Vicenza, la città del Palladio
Messaggi: 10218
quesito molto interessante!

...ci penso e se mi viene qualche idea... mi faccio vivo

come memorizzi la matrice di lettere?
niko0 è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2005, 13:47   #3
fgmac
Member
 
Iscritto dal: Apr 2000
Messaggi: 138
Un'idea potrebbe essere quella di spezzare il problema in due passi.
Nel primo passo identifichi le sole direzioni utili in base alla lunghezza della parola da cercare :
nell'esempio che facevi, per la posizione 0,0 le direzioni utili sono solo tre: sud, sud-est, est

Fatto questo metodo iterativo sulle lettere.

questa e' la prima idea che mi e' venuta in mente.

ciao,
__________________
fgmac
fgmac è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2005, 14:40   #4
end.is.forever
Senior Member
 
Iscritto dal: Jul 2004
Messaggi: 1578
Codice:
public Vector <Parola> risolvi(Matrice <char> matrice)
{
  Vector <Parola> paroleTrovate = new Vector <Parola>();
  for (int r = 0; r < matrice.numeroRighe(); r++)
    for (int c = 0; c < matrice.numeroColonne(); c++)
    {
      if (r < matrice.numeroRighe())
      {
        paroleTrovate.addRange(cercaInDirezione(matrice, r, c, EST));
        if (c < matrice.numeroColonne())
          paroleTrovate.addRange(cercaInDirezione(matrice, r, c, SUD_EST));
        if (c > 0)
          paroleTrovate.addRange(cercaInDirezione(matrice, r, c, NORD_EST));
      }
      ... uguale per le altre direzioni
    }
  return paroleTrovate;
}

private Vector <Parola> cercaInDirezione(int r, int c, Direzione d)
{
  Vector <Parola> paroleProvate = new Vector <Parola>();
  int numLettere;
  switch (d)
  {
    case EST: numMaxLettere = matrice.numeroColonne() - c;break;
    case SUD_EST:
      int maxC = matrice.numeroColonne() - c;
      int maxR = matrice.numeroRighe() - r;
      numMaxLettere = min(maxC, maxR);
      break;
    ..uguale per le altre direzioni
  }
  for (int numLettere = 2; numLettere < numMaxLettere; numLettere++)
  {
    char[] parolaDaProvare = new char[numLettere];
    for (int i = 0, ri = r; ci = c; i < numLettere; i++)
    {
      parolaDaProvare[i] = matrice.get(ri, ci);
      switch (d)
      {
        case EST: ci++;break;
        case SUD_EST: ci++;ri++;break;
        ..uguale per le altre direzioni
      }
    }
    Parola parola = Dizionario.cercaParola(parolaDaProvare);
    if (parola != null)
      paroleTrovate.add(parola);
  }
  return paroleTrovate;
}
Non ho compilato, ma in linea di massima farei così; una prima ottimizzazione potrebbe essere di considerare solo 4 delle 8 direzioni e poi al momento di testare la parola provarla in entrambi i sensi.
end.is.forever è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
AI Agent Traps: il paper DeepMind che ca...
Addio licenza proprietaria: Gemma 4 pass...
LG OLED in offerta su Amazon: quattro TV...
Amazon punta a Globalstar per sfidare St...
Successo immediato per The Super Mario G...
Raspberry Pi alza ancora i prezzi: Pi 5 ...
Solo 9 esemplari al mondo: ecco l'iPhone...
Hisense QLED 4K da 98 e 85 pollici: i pr...
L'equipaggio di Artemis II ha avuto prob...
Apple punta a dominare il mercato delle ...
TSMC: fino a mezzo trilione di dollari e...
Google inizia a modificare il sistema di...
Acer Nitro Blaze 7: la console portatile...
Il caro carburante colpisce Amazon: scat...
I futuri iPhone 18 Pro non saranno dispo...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v