Foros del Web » Programando para Internet » PHP »

mmm como hacer esto,ayuda plz

Estas en el tema de mmm como hacer esto,ayuda plz en el foro de PHP en Foros del Web. Bien no se si esto va aqui y si se puede hacer con PHP o que pero a ver si alguno me ayuda,mirar estoy haciendo ...
  #1 (permalink)  
Antiguo 09/03/2005, 10:18
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 19 años, 2 meses
Puntos: 0
mmm como hacer esto,ayuda plz

Bien no se si esto va aqui y si se puede hacer con PHP o que pero a ver si alguno me ayuda,mirar estoy haciendo una liga donde todos se enfrentan a todos,pero bien el problema es las rondas.. Me toy volviendo loco para hacer esto por ejemplo:

Imaginar que hay 4 ekipos.

RONDA 1
ekipo1 contra ekipo2
ekipo3 contra ekipo4
RONDA 2
ekipo1 contra ekipo3
ekipo2 contra ekipo4
RONDA 3
ekipo1 contra ekipo4
ekipo2 contra ekipo3

Bien con 4 ekipos es facil pero con 10 ya es mas complicado,por eso quiero saber si hay alguna funcion PHP que haga algo asi,o si no como podria hacerlo? Hy alguna RAIZ a seguir para hacer este tipo de cosas o tengo que hacerlo a ojo? :S
  #2 (permalink)  
Antiguo 09/03/2005, 10:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Función? ... en PHP?

Bueno .. no mencionas si usas Base de datos o que usas para almacenar esos datos y en función de esos gestionarlos.

Lo ideal es que "modeles" bien tu Base de datos con tu modelo própio .. que definas tus equipos (y relacionados sus integranetes) .. que definas la "ronda" que relaciones guarda con el equipo y en que consiste ...

Cuando tengas eso .. bien diseñado sólo tendrás que hacer "consultas" SQL a tu BD para obtener esas "rondas" .. o ingresar/crear "rondas" nuevas .. o incluso generar "rondas" de forma aleatoria (y sin repetirse) para generar esos equipos contra otro equipo .. o bien hacerlo de forma automática en función de algún algorítmo dado que -tu- definas.

Un saludo,
  #3 (permalink)  
Antiguo 09/03/2005, 10:48
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 19 años, 2 meses
Puntos: 0
ya si eso lo tengo todo,solo falta saber el algoritmo... o como hacer las rondas sin k se repitan entiendes?
  #4 (permalink)  
Antiguo 09/03/2005, 13:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok .. que lo tengas .. pero tendrás que exponerlo aquí. No sabemos como organizas tus datos (en tu BD?) como relacionas tus datos... en fin .. si eso ya lo tienes hecho .. publicalo aquí.

El algorítmo dependerá de como gestiones tus datos .. a lo mejor se puede hacer con SQL puro .. o con algo de PHP por médio.

Pero, de todas formas .. deberías explicar ese ejemplo .. Supongo que quieres hacer tantas combinaciones de los datos que tienes (tus "equipos") con el resto y que no se repitan .. Confirmalo o aclaralo .. por qué así es como se obtienen los "algoritmos".

Un saludo,
  #5 (permalink)  
Antiguo 09/03/2005, 14:17
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 19 años, 2 meses
Puntos: 0
mira en la BD la liga toda esta en una tabla ,puntos,nombre de los ekipos,web,partidos jugados,etc,etc...

Pero hay un campo que es DIVISION,es decir 1,1ª division,2,2ªdivision,asi ao un ranking de division='$division' que pilla solo los de dicha division y los ordena por puntos,bien ahora lo que necesito es hacer los "enfrentamientos" que supongo solo seran necesarios los datos "division","equipo",y "id"(id es para hacer una URL al perfil del ekipo) pero la cosa es que no se como hacerlos automaticamente sin ke se repitan.

y Claro ke kiero hacer todas las combinaciones posibles ke aya,k en este caso si son 10 ekipos seran 9 rondas con 9 combinaciones,entiendes? :D
  #6 (permalink)  
Antiguo 09/03/2005, 17:54
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 19 años, 2 meses
Puntos: 0
mmm me toy comiendo aun el tarro plz si alguien sabe alguna forma aunque sea matematica plz :(
  #7 (permalink)  
Antiguo 09/03/2005, 19:09
Avatar de Niconirva  
Fecha de Ingreso: marzo-2005
Mensajes: 119
Antigüedad: 19 años, 1 mes
Puntos: 0
Calculo Combinatotrio!

Esta bien, si quieres una forma matématica aquí te explico:
Tu situación se resuelve usando lo que matématicamente se llama calculo combinatorio (existen Variaciones, Permutaciones y Combinaciones). Tu caso es un caso tipico de una Combinación de m objetos tomados de a n (en tu caso la m seria la cantidad de equipos y son tomados de a 2 - juegan de a 2- entonces n seria 2). Prepare esta imagen pero no me dejan adjuntarla directamente (nose porque!).. la subí a mi host y puedes verla haciendo click en el siguiente vinculo:

http://www.pokerpop.com.ar/pforo.JPG

Ya viste la imagen??, bueno espero que lo allas entendido!, sino cualquier cosa me preguntas!..., ah! obviamente si quieres usar php debes definir esa función que te eh dado..., debe existir la función factorial (en pascal, c++ yo la eh usado) y en gral en todos los lenguajes de programación.
Espero que tengas suerte.., y luego me mandas lo que hicistes para probarlo!,
__________________
"Quien no peca contra la ciencia no descubre nada"
Albert Einstein

Última edición por Niconirva; 09/03/2005 a las 19:22
  #8 (permalink)  
Antiguo 09/03/2005, 19:34
Avatar de Niconirva  
Fecha de Ingreso: marzo-2005
Mensajes: 119
Antigüedad: 19 años, 1 mes
Puntos: 0
Agregando un poco más..

Re-leí tu mensaje y me di cuenta que no solo precisabas saber el numero total de combinaciones (encuentros o partidos en tu caso), sino tambien conocerlos. Bueno la manera es más o menos sencilla pero como es sistematica se puede programar:
Supongamos, que tienes 4 equipos, denominados A,B,C y D respectivamente.
El secreto esta en seguir el orden de aparición para no equivocarse, aprovechemos como aparecen y veamos que resulta:

Aparecen: A B C D

Veamos todas las posibles de A
AB
AC
AD
Veamos todas las posibles de B (B empieza tomando la de primera de al lado)
BC
BD
Veamos todas las posibles de C (C empieza tomando la primera de al lado)
CD

y ahí termina! (fijate que de seguir se repetirian!) A tiene 3, B tiene 2 y C tiene 1 total 3+2+1=6 lo que debería ser.

Como veras es re sistematico, y por ende se puede programar..., ta? dejo a tu criterio escribir el algoritmo.., vamos que es fácil!. Saludos!
(si precisas cuando tenga tiempo te pongo un ejemplo de 6 o 7 equipos por sino entiendes!)
__________________
"Quien no peca contra la ciencia no descubre nada"
Albert Einstein

Última edición por Niconirva; 09/03/2005 a las 19:36
  #9 (permalink)  
Antiguo 09/03/2005, 20:11
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 19 años, 2 meses
Puntos: 0
mmmm si lo k es eso si lo entiendo pero no se hacer el codigo php para que no se repitan... :S
  #10 (permalink)  
Antiguo 10/03/2005, 07:42
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 19 años, 2 meses
Puntos: 0
nada al final lo tendre k acer manualmente :(
  #11 (permalink)  
Antiguo 10/03/2005, 14:14
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 19 años, 2 meses
Puntos: 0
joer mi msg se va kedando atras nadie sabe como acer esto enserio? :S
  #12 (permalink)  
Antiguo 10/03/2005, 17:54
Avatar de Niconirva  
Fecha de Ingreso: marzo-2005
Mensajes: 119
Antigüedad: 19 años, 1 mes
Puntos: 0
Sii el codigo php para que no se repitan!!!???, pues si de verdad entendieras lo que te expuse sabrias que siguiendo esa forma sistematica no se repiten!!!, y para volcarlo al php..., usa un buen manual de php y quema un poco tus neuronass! (vas a aprender mucho mas haciendolo),
__________________
"Quien no peca contra la ciencia no descubre nada"
Albert Einstein
  #13 (permalink)  
Antiguo 17/03/2005, 10:39
 
Fecha de Ingreso: marzo-2005
Mensajes: 1
Antigüedad: 19 años, 1 mes
Puntos: 0
Exclamación igual Creando liga de futbol en php

Yo tambien necesito generar una liga de futbol en php, y no es tan sencillo como estan diciendo por ahi.
El algoritmo no lo he encontrado por ningun lado y la verdad que no se como plantearlo.
Por ejemplo para 6 equipos:
J1: AB, CD, EF
si en la jornada 2 cogemos como rivales para A y B los ke se han enfrentado en el segundo partido, ya queda la liga bloqueada.
J2: AC, BD, ¿EF? otra vez no puede

yo he estado buscando y es un problema de coloracion de aristas, pero no encuentro el algoritmo por ningun lado.Lo maximo que he encontrado el metodo del tabu search pero tpc especifica mucho.

a ver si alguien ayuda
  #14 (permalink)  
Antiguo 01/04/2005, 02:42
 
Fecha de Ingreso: junio-2002
Mensajes: 2
Antigüedad: 21 años, 10 meses
Puntos: 0
Hola, yo también estoy intentando hacer lo mismo y no acabo de encontrar el algoritmo y resulta tremendamente difícil encontrar la forma de realizarlo.

Niconirva tu lo ves muy fácil con el cálculo combinatorio, pero si te fijas no te hace bien las jornadas, tienes la temporada completa pero no te hace bien las casillas, yo lo he hecho también por medio de matrices y me hace lo mismo de forma más sencilla pero tengo el mimo problema y es ajustar jornadas en las que o no se repita el mismo equipo en la misma jornada y que no trunque el resto de la jornada al hacer que otro equipo repita.

En las matrices estoy buscando coincidencias pero no lo consigo ver claro y más cuanto más grande es la liga, a ver si alguien sabe como poder hacerlo, un saludo.
  #15 (permalink)  
Antiguo 01/04/2005, 13:39
 
Fecha de Ingreso: noviembre-2004
Mensajes: 14
Antigüedad: 19 años, 5 meses
Puntos: 0
y si probas esto?

usa www.myleague.com y ya?
  #16 (permalink)  
Antiguo 20/04/2005, 09:17
 
Fecha de Ingreso: abril-2005
Mensajes: 2
Antigüedad: 19 años
Puntos: 0
facilito

He estado mirando lo de la liga por que yo tb necesito un algoritmo, como he visto que aqui no habia nada, me he puesto manos a la obra. y creo que es muy facil, si es como lo he pensado yo. a ver si me explico.
Como he visto el algoritmo: pon tus equipos en un grupo ciclico, asi jugando con uno de ellos, con los demas tendras que hacer lo mismo.
En la 1a jornada A contra B,en la 2º A contra C en la 3ª A contra D asi hasta n-1 jornadas. es decir cada equipo contra k veces el siguiente siendo k el numero de jornadas.

A F
B E
C D

Como hacer el algoritmo es facil pasarlo al lenguaje que sea.
A(i) contra A(i+k modulo n) until k = n
siendo A un vector de n componentes i la posicion y k la jornada que quieras.
ahora lo unico que te salen dos veces cada partido te quedas con uno solo.
en particular puedes quedarte: si k es impar, el A(i) menor juega en casa, si k es par el A(i) con i mayor juega fuera.
  #17 (permalink)  
Antiguo 20/04/2005, 09:50
 
Fecha de Ingreso: abril-2005
Mensajes: 23
Antigüedad: 19 años
Puntos: 0
Crea todas las combinaciones

Primero saca una tabla con todas las combinaciones posibles de los equipos, esto es sencillo con una burbuja (conocimientos basicos de programacion) y agregale unos campos extras para almacenar las rondas o jornadas

Para sacarlos en orden aleatorio, los metes a una matriz de php y los vaz sacando en forma aleatoria y les asignas una clave o ronda y despues los metes de nuevo a la base de datos y ya te quedan.

No se si me explique, pero yo programe algo parecido pero mas complejo porque es todo un programa de actividades de un evento cultural, donde ademas de los grupos influian un monton de factores extras. Así que a lo que tu quieres no le veo mucho problema, eso si, tienes que pensarle un poquito.

Si tienes las reglas del negocio ponlas aqui para ver que podemos hacer el fin de semana. o solo quieres mesclarlos????.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:40.