Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-02-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No creo que sea tanto po día sino por jornada. O sea, hay que hacer la distribución de los partidos de cada semana.

// Saludos
Responder Con Cita
  #2  
Antiguo 24-02-2009
Peterlolazo Peterlolazo is offline
Miembro
 
Registrado: oct 2007
Posts: 10
Poder: 0
Peterlolazo Va por buen camino
Cita:
Empezado por roman Ver Mensaje
No creo que sea tanto po día sino por jornada. O sea, hay que hacer la distribución de los partidos de cada semana.

// Saludos
Tampoco se pide saber cuantos partidos por semana, lo unico que hay como requisito en este programa es que cada equipo juege con todos los demas sin repetirse. y, en caso de que el numero de equipos sea impar, que todos los dias descance un equipo diferente.
Responder Con Cita
  #3  
Antiguo 25-02-2009
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hacer una matriz de tantas filas y columnas como equipos más una fila

A partir de ahí, tendrás que iterar siempre de izquierda a derecha y de arriba abajo o en columnas, pero siempre en el mismo orden. De no hacerlo así, te saldrán partidos repetidos.
Además, tienes que llevar el control de las columnas y filas que se eliminan en cada iteración.

Ejemplo

Son seis los equipos. Creamos una matriz de filas = nº de equipos más dos y columnas nº de equipos más dos LA diagonal central se anula, ya que no pueden jugar contra sí mismos.
Código:
Anulacion							
	x	1	2	3	4	5	6
	1	x					
	2		x				
	3			x			
	4				x		
	5					x	
	6						x
Las iteraciones terminan cuando has terminado con todos los partidos del equipo 1. Esto indicará la primera vuelta.
primera jornada:
Iteración 1
Primera columna: El equipo 1 se enfrentará consigo mismo. Como la casilla está ocupada, se sigue con la siguiente columna.
Siguiente columna: Como está vacía, se pone un “1”, primera jornada, partido 1 vs 2. En la primera fila y la primera columna, se marcan las filas y columnas 1 y 2 ya que están ya asignados esos equipos.
Se cuenta 1 en el contador de partidos, que máximo será 3 porque son seis equipos.
Iteración 2: Se salta la fila 2 ya que este equipo está ya ocupado en esta jornada.
Iteración 3: se saltan las columnas 1 y 2 porque los equipos están ocupados. La siguiente columna se salta porque no puede jugar contra sí mismo ¿ quién ganaría ¿
Siguiente columna: como está libre, se pone un “1”, segundo partido de la jornada 1.
Se marcan las filas y columnas de los equipos 3 y 4, ya que ya están asignados para esta jornada.
Se cuenta uno al contador de partidos.
Iteración 4: se saltan las filas 1,2,3 y 4 por estar ya asignados los equipos.
Con el equipo 5 se saltan las columnas de los equipos 1,2 ,3 y cuatro. También la del 5 por ser el mismo equipo. Ponemos en la casilla de los equipos 5 y 6 que está libre otro “1” de la primera jornada.
Se suma uno al contador, como ya hemos llegado a tres, empezamos con la segunda jornada.
El resultado es esta tabla
Código:
Anulacion	si	si	si	Si		
	x	1	2	3	4	5	6
Si	1	x	1				
Si	2		x				
Si	3			x	1		
Si	4				X		
	5					x	1
	6						X

Se desmarcan todos los equipos como ocupados.
El resultado es éste
Código:
Anulacion							
	x	1	2	3	4	5	6
	1	X	1				
	2		x				
	3			x	1		
	4				X		
	5					x	1
	6						X
Segunda jornada.
Empezamos con la fila del equipo 1. Saltamos las casillas ocupadas. Como la columna del equipo 3 está libre, ponemos un “2” de segunda jornada.
Ponemos las filas y columnas de los equipos 1 y 3 ocupadas.
Aumentamos el contador de partidos.
Pasamos a la fila 2, que no está ocupada.
Saltamos las columnas de los equipos 1, 2 y 3 por lo ya descrito anteriormente. Plantamos un “2” en la casilla de los equipos 2 y 4.
Marcamos las filas y columnas de los equipos 2 y 4 como ocupadas
Aumentamos el contador de partidos, ya nos queda menos.
Pasamos a la fila 5 que es la siguiente libre. Recorremos las filas ocupadas hasta la columna 6. Como ya está rellena por el valor “1”, pasamos de largo. Como no hay más columnas, pasamos a la siguiente fila.
Pasamos a la fila 6, y en la columna del equipo 5 ponemos el valor “2”.
Como ya tenemos los tres partidos por jornada, pasaremos a la siguiente jornada.
Se desmarcan todas las filas y columnas como ocupadas.
Aplicamos el algoritmo hasta el final (nº de equipos - 1), y el resultado deberá salir algo parecido a esto
Código:
Anulacion							
	x	1	2	3	4	5	6
	1	X	1	2	3	4	5
	2		x	5	2	3	4
	3			x	1		
	4			4	X	5	
	5					X	1
	6			3		2	X
Y ya está. Si quieres puedes utilizar un valor determinado para rellenar las casillas que están ocupadas temporalmente y te ahorras manejar una fila y una columna.

Espero que te sirva de ayuda. Lo único que necesitas es saber cómo se redimensiona una matriz para asignar las filas y las columnas.
Otra cosa que puedes hacer es hacer un stringgrid para ver en pantalla el resultado.
Y por supuesto, gastar lápiz y papel hasta que ajustes perfectamente el algoritmo.

Ya nos contarás.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #4  
Antiguo 25-02-2009
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Muy buena idea fjcg02, pero estas repitiendo partidos de los equipos 5-6.

Para asegurarte de no repetir se deberia recorrer solo el triangulo superior de la matriz
__________________
[Crandel]
Responder Con Cita
  #5  
Antiguo 26-02-2009
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Jamás hubiera pensado que nadie leería la solución, y menos chaparsela para encontrar un bug !!
Mis más sinceras felicitaciones, Crandel.
Hay que meter otro par de variantes. Cuando se haga un partido, marcar el reciproco por ejemplo con un 0. Por ejemplo, 1 vs 3, marcar con 0 la casilla 3-1. Si al iterar no se puede completar la jornada - en este caso se repetiría el partido 5-6 en la segunda jornada, habría que desmarcar todos los partidos de la jornada que estamos calculando y volver a empezar calculando el primer partido desde el siguiente equipo. ASí hasta que pueda completarse la jornada.
Espero que sea suficiente. El fósforo lo gasté ayer haciendo el algoritmo.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #6  
Antiguo 27-02-2009
Peterlolazo Peterlolazo is offline
Miembro
 
Registrado: oct 2007
Posts: 10
Poder: 0
Peterlolazo Va por buen camino
Y no hay una manera mas simple de hacerlo?, pk la verdad he leido ese post que dejaste como 5 veces y no logro imaginarme como voy a poner eso en codigos jajajaja.
Responder Con Cita
  #7  
Antiguo 27-02-2009
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Sí que habría una manera más fácil de hacerlo. Quedamos en cuántos eurakos me vas a dar y te paso el código. Así sólo haces copiar y pegar, que obviamente es más sencillo.
Creo que Crandel también estará de acuerdo ;-)
Ya sabes, son los tiempos, que están muy achuchaos... y los pañales muy caros.

Saluditos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Algún algoritmo para calcular el último día de un mes David OOP 3 06-03-2008 17:13:01
problemas para ejecutar juegos pda lialias Varios 7 20-02-2008 18:18:51
Algoritmo para comparacion de cadenas danilo_candales Varios 8 17-11-2007 17:23:14
Librería para hacer juegos con Pascal Ñuño Martínez Varios 21 28-09-2007 13:13:57
Algoritmo para calcular el BPM turminator Varios 0 29-05-2007 00:19:49


La franja horaria es GMT +2. Ahora son las 04:51:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi