![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Se me ocurre que hagas una matriz de cantidad(A) x cantidad(B). En mi anterior ejemplo 5x3.
Luego vas haciendo parejas según los cruces en la matriz y los vas recorriendo diagonamente. (Se recorren diagonalmente, porque si el A1 juega con B1, A1 no puede jugar con nadie mas esa jornada) Eemplo visual Lista 1 (1,2,3,4,5) Lista 2 (A,B,C) Código:
12345 A \ B \ C \ A1, B2, C3 Código:
12345 A \ B \ C \ A4, B5, C1 Código:
12345 A \ B \ C \ A2, B3, C4 Código:
12345 A \ B \ C \ A5, B1, C2 La idea es que elijas el primer y saltes uno a la derecha y uno abajo para elegir el siguiente. Si te pasas de longitud, en una de las dos direcciones vuelves al primer elemnto.
Al final tendrás las 15 parejas, pero debes tener en cuenta que n (la cantidad de estadios de futbol) no puede ser mayor que la cantidad de equipos en la lista más pequeña. De lo contrario, según el ejemplo anterior algún equipo deberá jugar dos veces ese día: A1,B2,C3,¡¡¡A4!!! También tendrás que tener en cuenta que para que un equipo no descanse más de dos jornadas, deberá haber un número mínimo de campos. En el ejemplo de 3x5 n debe ser >=2 Última edición por duilioisola fecha: 13-11-2010 a las 23:18:51. |
|
#2
|
|||
|
|||
|
Si en 1ª hay 5 equipos, en 2ª hay 3 equipos, y hay 2 campos, un equipo de primera tiene obligatoriamente que descansar 2 jornadas seguidas.
Podrías hacer esto Ejemplo Equipos primera: 1 2 3 Equipos segunda: A B C Tabla PARTIDOS con dos campos: LOCAL, VISITANTE. Calculas el número de partidos (en el ejemplo 3 x 3 = 9) Añades 9 registros Pones como local los 3 equipos de primera hasta llenar los 9 registros. LOCAL 1 2 3 1 2 3 1 2 3 Otra tabla PROVISIONAL con 9 registros y la llenas con los equipos de segunda repitiéndolos las veces que haga falta A B C A B C A B C Ahora tendrías que ir cogiendo el primer equipo de la tabla provisional y ponerle como visitante en la tabla PARTIDOS y borrarle. Coger de nuevo el primero (será otro) y ponerle de visitante en el siguiente registro y después borrarle. Esto habiendo controlado antes que esa pareja no esta ya hecha, en cuyo caso en vez del primero se coge el siguiente hasta que sea valido para no repetir pareja, cuando sea válido se coloca y se borra. De nuevo se coge el primero el primero, etc, etc hasta que quede vacía la talbla provisional y completados los partidos. quedaría así LOCAL VISITANTE 1 A 2 B 3 C 1 B 2 A 3 A 1 C 2 C 3 B Ahora ir cogiendo por orden para cada jornada, controlando que no entre un equipo repetido en la misma jornada Si hay dos campos quedaría joranda 1ª ... 1 A y 2 B joranda 2ª ... 3 C y 1 B joranda 3ª ... 2 A y 1 C joranda 4ª ... 3 A y 2 C joranda 5ª ... 3 B pero ahora que he acabado veo que tampoco funciona bien pues el B y el 1 han estado dos jornadas descansando. Mira a ver si puedes depurarlo y que funcione bien. Última edición por fidel fecha: 14-11-2010 a las 17:47:41. |
|
#3
|
|||
|
|||
|
Algo difícil (emparejamientos de listas)
Muchas gracias, voy a coger la idea de los dos (duilioisola, fidel), aquí no tengo compilador para poder probarlo ahora mismo.
Crearé una matriz para los partidos de dos dimensiones que se irán marcando conforme se juegue. Para cada jornada recorreré la matriz en diagonales, por otra parte tendré dos listas ordenadas con el nº de veces que ha descansado cada equipo e iré cogiendo los primeros que aparezcan en esas listas y así hasta que quede completada la matriz. Creo que de esta forma no será necesario implementar un "vuelta atrás", que sinceramente, para este caso no sabría ni por donde empezarlo. |
|
#4
|
||||
|
||||
|
Hola Rioja72.
Para sumar alguna idea te pongo un código que hasta donde probé funciona. Dados los datos, genera todas las combinaciones posibles, aunque no necesariamente en el órden que mostras en tu ejemplo. La cantidad de elementos de las listas, así como el número de elementos por grupos se ajustan con tres SpinEdits. Te quedaría probarlo más a fondo y ver si te puede servir. (o al menos espero que te aporte alguna idea)
Saludos. ![]() Última edición por ecfisa fecha: 15-11-2010 a las 08:45:16. |
|
#5
|
|||
|
|||
|
¡¡¡ qué pasada !!!, muchas gracias, claro que sirve de ayuda, me basaré ya en este código para continuar y depurarlo. Hay que decir que descansan más de una jornada y hay que ajustar la rejilla (grilla) para ver todos los resultados. Sigo dándole vueltas y me parece que del "vuelta atrás (backtracking)" no me salva nadie.
De nuevo, muchas gracias por tu interés. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| algo muy difícil... | cmm07 | Gráficos | 9 | 07-05-2008 16:57:31 |
| Puede ser dificil algo que se hace con tan solo 3 teclas? | marcoszorrilla | La Taberna | 20 | 25-10-2007 10:00:40 |
| Una consulta dificil | noshy | SQL | 3 | 31-05-2006 20:50:58 |
| Reporte con Rave algo mas bien dificil!! | ilichhernandez | Impresión | 1 | 20-10-2005 14:08:04 |
| Es algo importante ejecución de .exe y algo más ayúdenme | kakesoft | Varios | 5 | 02-05-2005 10:01:14 |
|