Ciao ragazzi, mi sto cimentando per diletto nella realizzazione di un algoritmo che generi automaticamente il calendario per la mia lega di Fantacalcio e, conoscendo l'algoritmo di Berger e avendo trovato già un esempio fatto, ho deciso di implementare quello.
Inutile dire che funziona perfettamente, ci mancherebbe! L'unico problema che vedo lo trovo applicandolo alla generazione delle prime due giornate. Infatti in questo caso accade che una squadra giochi due volte consecutivamente in casa e un'altra due volte consecutivamente in trasferta e ciò ovviamente non è ammesso trattandosi delle prime due giornate.
Il codice è questo
Qualcuno per caso si è mai imbattuto in una situazione simile?codice://per ogni giornata da svolgere for (int round=1;round<roundNumber+1;round++) { System.out.println("-----Giornata "+(round)+"---------"); if (round % 2 == 0) { for (int team = 0; team <teamNumber/2 ; team++) { String incontro = awayArray[team]+" - "+homeArray[team]; System.out.println(team+1+"-"+incontro); } } else { for (int team = 0; team <teamNumber/2 ; team++) { String incontro = homeArray[team]+" - "+awayArray[team]; System.out.println(team+1+"-"+incontro); } } // Ruota in avanti gli elementi delle liste, tenendo fisso il primo elemento // Salva l'elemento fisso String pivot = homeArray[0]; System.out.println("PIVOT: "+pivot); // sposta in avanti gli elementi di "trasferta" inserendo // all'inizio l'elemento casa[1] e salva l'elemento uscente in "riporto" String riporto = awayArray[arrayLenght-1]; System.out.println("RIPORTO: "+riporto); awayArray = shiftRight(awayArray,homeArray[1]); // sposta a sinistra gli elementi di "casa" inserendo all'ultimo // posto l'elemento "riporto" homeArray = shiftLeft(homeArray, riporto); // ripristina l'elemento fisso homeArray[0] = pivot; public String[] shiftRight (String[] awayArray, String home1) { for (int i=awayArray.length-1;i>0;i--) { awayArray[i] = awayArray[i-1]; } awayArray[0] = home1; return awayArray; } public String[] shiftLeft (String[] homeArray, String riporto) { for (int i=0;i<homeArray.length-1;i++) { homeArray[i] = homeArray[i+1]; } homeArray[homeArray.length-1] = riporto; return homeArray; } }

Rispondi quotando