Salve a tutti, devo fare per l'uni questo progettino...
-----
Esercizio: catena di parole
Scrivere un programma che accetti in input da riga di comando il nome di un file di testo e un valore numerico n.
Il file di testo deve contenere una lista di parole, una su ogni linea, da usare come dizionario.
Il programma deve visualizzare in output la più lunga catena di parole ottenibile usando parole del dizionario.
Una catena di parole è una sequenza di parole in cui ogni parola, esclusa la prima, inizia con le stesse n lettere con cui si conclude la parola precedente. Il valore n corrisponde a quello acquisito da linea di comando.
Esempio:
Lanciando il programma con java Esercizio dizionario.txt 2, dove il file dizionario.txt contiene:
mare
roma
casa
remo
si potrà ottenere in output:
roma
mare
remo
-----
ecco quello che ho fatto:
codice:
import java.util.ArrayList;
public class Esercizio{
private int num=2;
ArrayList<String> parole = new ArrayList<String>(); //Creo l'arrayList parole del dizionario
ArrayList<String> parole2 = new ArrayList<String>();
private void inserisci(){
parole.add("mare");
parole.add("roma");
parole.add("casa");
parole.add("remo");
}
private void stampa(){
for (int i=0 ; i< parole2.size() ; i++) {
System.out.println(parole2.get(i).toString());
}
}
private void scandisci(){
parole2.add(parole.get(1));
int count =0;
String fine = finisceCon(parole.get(1).toString(),num);
//while(count<parole.size()){
for (int i=0 ; i< parole.size() ; i++) {
for (int j=0 ; j< parole.size() ; j++) {
String inizio = iniziaCon(parole.get(j).toString(),num);
if(fine.equals(inizio)){
parole2.add(parole.get(j));
parole.remove(j);
}
//else break;
}
count++;
//fine = finisceCon(parole.get(i).toString(),num);
//}
}
}
private String finisceCon(String parola, int num){
int lettere=parola.length();
int start=lettere-num;
String nuovaparola=parola.substring(start,lettere);
return nuovaparola;
}
private String iniziaCon(String parola, int num){
String nuovaparola=parola.substring(0,num);
return nuovaparola;
}
public static void main (String[]args){
Esercizio Catena = new Esercizio();
Catena.inserisci();
Catena.scandisci();
Catena.stampa();
}
}
la soluzione migliore sarebbe farlo in modo ricorsivo ma a me non viene nemmeno completo iterativo!!!
Grazie