Salve a tutti tra i vari esercizi che ho trovato in rete per provare a vedere se sto cominciando a capire java ne ho trovato uno che chiede la creazione di tutte le permutazioni di un gruppo di parole in maniera ricorsiva. In pratica chiede di leggere un file testuale in ingresso contenente un numero di parole(e questo l'ho fatto è abbastanza banale) creare poi tutte le permutazioni possibili (qui c'è il problema) e scegliere un numero a caso di queste permutazioni e mostrarle a video(e anche questo è abbastanza semplice e sono riuscito a farlo)
l'algoritmo che ho scritto prendendo spunto da vari suggerimenti trovati in rete è queso
codice:
import java.util.Scanner;
import java.util.ArrayList;
public class GeneratorePermutazioni{
private ArrayList<String> insiemeParole;
public GeneratorePermutazioni(ArrayList<String> unInsiemeParole){
insiemeParole=unInsiemeParole;
}
public ArrayList< ArrayList<String> > creaPermutazioni(){
ArrayList<ArrayList<String>> permutazioni=new ArrayList<ArrayList<String>>();
if(insiemeParole.size()==0){
permutazioni.add(insiemeParole);
return permutazioni;
}
for(int i = 0; i<insiemeParole.size(); i++){
String parola = insiemeParole.get(i);
ArrayList<String> sottoParole =new ArrayList();
for (String p : insiemeParole){
if(!(parola.equals(p)))
sottoParole.add(p);
}
GeneratorePermutazioni generaSottoPermutazioni = new GeneratorePermutazioni(sottoParole);
ArrayList <ArrayList<String>>sottoPermutazioni =generaSottoPermutazioni.creaPermutazioni();
for (ArrayList<String> l : sottoPermutazioni){
l.add(1,parola);
permutazioni.add(l);
}
}
return permutazioni;
}
}
secondo il mio modesto parere dovrebbe funzionare ma ovviamente nn lo fa...
se cerco di creare un vettore con tutte le permutazioni con il codice sopra mi solleva un eccezione di tipo IndexOfBoundException
qualche idea su come posso fare???