L'ultimo algoritmo non mi soddisfava molto visto che era strutturato maluccio.
Cosi mi sono messo a rifarlo.
Allora questi è il main
Come vedete il controllo lo faccio ad ogni numero generato e non ad ogni matrice generata come prima.codice:static int[]v=new int[8]; static int[][]m=new int[4][8]; public static void main(String[]args){ int c; for(int i=0;i<m.length;i++){ for(int j=0;j<m[0].length;j++){ do{ c=(int)(Math.random()*8)+1; } while(verificaNumeriDiversi(c)==false && verificaCoppie(c)==false); v[j]=c; m[i][j]=c; } for(int x=0;x<v.length;x++){ v[x]=0; } } for(int i=0;i<m.length;i++){ for(int j=0;j<m[0].length;j++){ System.out.print(m[i][j]+" "); } System.out.println(); }
Ora il concetto è: continuo a generare un numero casuale fino a quando
1>Il numero generato è diverso da ogni altro numero della riga
2>La coppia di numeri è diversa e unica
Ora per il punto 1 ho creato la seguente classe perfettamente funzionante
L'array V è globale e viene usato per "contenere" i numeri estratticodice:public static boolean verificaNumeriDiversi(int c){ for(int x=0;x<v.length;x++){ if(c==v[x]){ return false; } } return true; }
Per il punto 2 stavo pensando a qualcosa del genere
ma non funziona non esegue il controllocodice:public static boolean verificaCoppie(int c){ for(int i=0;i<m.length-1;i++){ for(int j=0;j<m[0].length;j=j+2){ if(c==m[i+1][j] && m[i][j+1]==m[i+1][j+1]){ return false; } } } return true; }![]()
Mi potete dare una mano? Come dicevo prima mi serve una classe che controlli gli accoppiamenti di ogni numero uscito![]()



Rispondi quotando