Hai ragione, con Java tendo a ragionare meno con gli algoritmi.
Si partiamo dal caso più facile, estraggo i seguenti numeri senza reinserimento: 1,2,3,4,5 e non voglio che il prossimo sta nella decina 1-10. Il Calcolo combinatorio risulta essere dunque semplice ( 10!/(10-5)! * 5! ) * (80!/(80-1)! + 1!) = 20160 combinazioni nel mio esempio(moltiplicare per 9 se vogliamo tutte le combinazioni di ogni decina).
La conversione in java potrebbe essere questa:
List<Scheda> combination = generate(1,10,5); // genera le combinazioni in raggruppamenti di 5 nell'intervallo [1,10]
for(Scheda scheda : combination){
ArrayList<Integer> temp;
for(int j=11;j<91;j++){
temp=scheda.getScheda(); temp.add(j);
permutations.add(new Scheda(temp));
}
}
tutte le combinazioni invece:
for(int i=1;i<=81;i=i+10){
List<Scheda> combination = generate(i,i+10,5);
for(Scheda scheda : combination){
ArrayList<Integer> temp=new ArrayList<>();
for(int j=i+10;j<91;j++){
temp=scheda.getScheda(); temp.add(j);
permutations.add(new Scheda(temp));
}
for(int j=1;j<i;j++){
temp=scheda.getScheda(); temp.add(j);
permutations.add(new Scheda(temp));
}
}
}