Resulta que tengo que implementar el algoritmo "todos contra todos" en java, o sea para una liga... en este caso es de futbol.
Luego de estar horas quemandome el coco buscando la forma de poder enfrentarlos todos contra todos probando algoritmos en hoja y papel sin exito, al final como manotazo de ahogado se me da por buscar en google y me ecuentro con este algoritmo que si sirve: http://es.wikipedia.org/wiki/Sistema_de_todos_contra_todos
El tema del algoritmo es asi:
Equipos Enfrentamientos
1 2 3 4 5 6 ---> 1vs6 --- 2vs5 -- 3vs4
1 6 2 3 4 5 ---> 1vs5 --- 6vs4 -- 2vs3
1 5 6 2 3 4 ---> 1vs4 -- 5vs3 -- 6vs2
1 4 5 6 2 5 ---> 1vs3 -- 4vs2 -- 5vs6
1 3 4 5 6 2 ---> 1vs2 -- 3vs6 -- 4vs5
La cosa es asi: para determinar el calendario del torneo, se realiza un simple algoritmo de selección... a cada uno de los competidores (en este caso 1 2 3 4 5 6 a la izquieda) se le asigna un número y se van rotando los números, dejando uno fijo (en este caso el 1)
Se procede a "enfrentar" el primero contra el ultimo, el segundo contra el penultimo, el tercero contra el antepenultimo y todo asi... sumando uno del lado izquierdo y restando uno del lado derecho, de tal manera suponiendo que tengamos 6 equipos 1 2 3 4 5 6 los enfrentamientos serian: 1vs6 --- 2vs5 -- 3vs4, etc etc luego para el siguiente mentenemos el 1 fijo y vamos cambiando la segunda posicion.
Bueno el tema es que voy a empezar con la funcion de generarPartido primero y tengo dudas...
public static void generarPartidos() {
int cantCuadros = 5;
int cantMaxEncuentros=3;
String[] arrEncuentros = new String [cantMaxEncuentros];
String [] arrCuadros = new String[5];
arrCuadros[0] = "River";
arrCuadros[1]="Boca";
arrCuadros[2]="Newells";
arrCuadros[3]="Indepentiente";
arrCuadros[4]="Estudiantes";
arrCuadros[5]="Velez";
for( int i=0; i<cantMaxEncuentros; i ++ ){
}
}
Lo que intento hacer es guardar dentro de arrEncuentros en cada posicion los enfrentamientos.. en este caso serian 3 por cada llamada a la funcion "generarPartidos" no tengo mucha idea de como asignar. La idea es que el arrCuadros se pase como parametro a la funcion y se llame varias veces mandando el vector alterado para generar el total de 15 partidos que son, pero lo estoy haciendo todo en esta solo para probar de a 3 partidos por lo menos.
Por ejemplo deberia quedarme asi en cada posicion del vector al ir imprimiendo el contenido de sus posiciones:
River– Velez
Boca – Estudiantes
Newells - Independiente
Quiero solo empezar con esta pequeña partecita y luego ire de a poco con el resto que me piden!
Alguna idea? ayudita? mano .. se agradece!