Luego de estar horas quemandome el coco buscando la forma de poder enfrentarlos todos contra todos sin repeticiones de enfrentamientos 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...
Código
public static void generarPartidos() { int cantCuadros = 5; int cantMaxEncuentros=3; 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!