Aggiunto il package logica e il file dizionario.txt con 660000 parole

This commit is contained in:
Mr SL1D3R 2025-02-13 12:49:48 +01:00
parent ab9cf96094
commit 943167afe0
4 changed files with 661683 additions and 0 deletions

661563
dizionario.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,4 @@
package com.mrsl1d3r.wordle.logica;
public class Parola {
}

View File

@ -0,0 +1,4 @@
package com.mrsl1d3r.wordle.logica;
public class Partita {
}

View File

@ -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;
}
}