Aggiunto il package logica e il file dizionario.txt con 660000 parole
This commit is contained in:
parent
ab9cf96094
commit
943167afe0
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,4 @@
|
|||
package com.mrsl1d3r.wordle.logica;
|
||||
|
||||
public class Parola {
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
package com.mrsl1d3r.wordle.logica;
|
||||
|
||||
public class Partita {
|
||||
}
|
|
@ -0,0 +1,112 @@
|
|||
package com.mrsl1d3r.wordle.logica;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import com.mrsl1d3r.wordle.filtro.FiltroPerLunghezza;
|
||||
|
||||
/**
|
||||
* Classe per gestire un vocabolario di parole.
|
||||
* Consente l'aggiunta di parole e il caricamento da file di testo.
|
||||
*
|
||||
* @version 1.0
|
||||
* @author Angelo Ciausu
|
||||
*/
|
||||
public class Vocabolario {
|
||||
private String[] parole;
|
||||
private int num;
|
||||
|
||||
/**
|
||||
* Costruttore che inizializza il vocabolario con capacità iniziale.
|
||||
*/
|
||||
public Vocabolario(){
|
||||
parole = new String[100];
|
||||
num = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Aggiunge una parola al vocabolario se non è già presente
|
||||
*
|
||||
* @param parola La parola da aggiungere
|
||||
*/
|
||||
|
||||
public void add(String parola, int lunghezza) {
|
||||
// Converti la parola in minuscolo e rimuovi spazi
|
||||
parola = parola.toLowerCase().trim();
|
||||
|
||||
// Crea un'istanza del filtro per lunghezza
|
||||
FiltroPerLunghezza filtro = new FiltroPerLunghezza(lunghezza);
|
||||
|
||||
// Controlla se la lunghezza della parola corrisponde alla lunghezza specificata usando il filtro
|
||||
if (filtro.accetta(parola) && !presente(parola)) {
|
||||
// Ridimensiona l'array se pieno
|
||||
if (num == parole.length) {
|
||||
String[] newParole = new String[num * 2];
|
||||
System.arraycopy(parole, 0, newParole, 0, num);
|
||||
parole = newParole;
|
||||
}
|
||||
parole[num++] = parola;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifica se una parola è già presente nel vocabolario.
|
||||
*
|
||||
* @param parola La parola da cercare
|
||||
* @return true se la parola è presente, false altrimenti
|
||||
*/
|
||||
private boolean presente(String parola) {
|
||||
for (int i = 0; i < num; i++) {
|
||||
if (parole[i].equals(parola)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Carica le parole da un file di testo.
|
||||
*
|
||||
* @param nomeFile Il percorso del file da leggere
|
||||
*/
|
||||
public void caricaDaFile(String nomeFile) {
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader(nomeFile))) {
|
||||
String riga;
|
||||
while ((riga = reader.readLine()) != null) {
|
||||
// Rimuovi punteggiatura e converti in minuscolo
|
||||
String[] words = riga.replaceAll("[^a-zA-Z\\s]", "")
|
||||
.toLowerCase()
|
||||
.split("\\s+");
|
||||
for (String word : words) {
|
||||
if (!word.isEmpty()) {
|
||||
add(word, word.length()); // Passa la lunghezza della parola come secondo argomento
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.err.println("Errore nella lettura del file: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce una rappresentazione in stringa del vocabolario.
|
||||
*
|
||||
* @return Stringa contenente tutte le parole
|
||||
*/
|
||||
public String toString(){
|
||||
StringBuilder s = new StringBuilder();
|
||||
for (int i = 0; i < num; i++) {
|
||||
s.append(parole[i]).append(" "); // Aggiungi spazio tra le parole
|
||||
}
|
||||
return s.toString().trim(); // Rimuovi spazio finale 1
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il numero di parole nel vocabolario.
|
||||
*
|
||||
* @return Il numero di parole
|
||||
*/
|
||||
public int size(){
|
||||
return num;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue