SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: patpite en Jueves 2 de Diciembre de 2004, 00:14

Título: Cómo Formar Grupos?
Publicado por: patpite en Jueves 2 de Diciembre de 2004, 00:14
Hola a todos, a ver si me podéis echar una manilla con esto...

Tengo un conjunto de M puntos, y tengo que hacer grupos con ellos. Cada grupo va a tener N-M puntos. En total (aplicando úna fórmula combinatoria -M sobre N-) se formarán G grupos.

Sé cuántos grupos se me formarán, pero no sé cómo formar cada uno de esos grupos, es decir: cómo poner los (N-M) puntos en cada grupo.

Os pongo un ejemplo:

Sea N= 1. Tengo M=10 puntos en total. Quiero que cada grupo tenga M-N=10-1=9 puntos. Aplico combinatoria y sé que se formarán (10 sobre 1) = 10 grupos.

Llamamos a los puntos: (1,2,3, ..., 9,10)

Sé que los grupos que se forman son:

G1 = (1,2,3,4,5,6,7,8,9)
G2 = (1,2,3,4,5,6,7,8,10)
G3 = (1,2,3,4,5,6,7,10,9)
G4 = (1,2,3,4,5,6,10,8,9)
G5 = (1,2,3,4,5,10,7,8,9)
G6 = (1,2,3,4,10,6,7,8,9)
G7 = (1,2,3,10,5,6,7,8,9)
G8 = (1,2,10,4,5,6,7,8,9)
G9 = (1,10,3,4,5,6,7,8,9)
G10 = (10,2,3,4,5,6,7,8,9)

Ahora: ¿cómo sería el código que me permitiera crear esos grupos Gi, para el caso general con M y N como datos? (aparte de los puntos, claro)

Os agradecería mucho que me echáseis una manos, porque no doy con la solución.

Gracias.
Título: Re: Cómo Formar Grupos?
Publicado por: sergiotarrillo en Jueves 2 de Diciembre de 2004, 05:12
podrias poner un ejemplo mas chico, no entiendo lo que quieres,  debe ser el sueño que esta que consume......  :scream:
Título: Re: Cómo Formar Grupos?
Publicado por: patpite en Jueves 2 de Diciembre de 2004, 19:36
Uauhh Serghio... las 5.12 am.. no me extraña que tengas sueño  :rolleyes:

Mira, en otro foro me han puesto esto como posible solución (aún no la he probado):
M = 10
N = 1
F = M - N
S = M

FOR I = 1 TO M
FOR J=1 TO F
IF J = S
G += S
ELSE
G+= J
NEXT J
G = STRING.EMPTY
S = S - 1
NEXT I


Como ejemplo más pequeño... a ver... hum...

- Defino una variable N=1. Tengo M=3 puntos. Quiero hacer grupos con ellos, y que cada grupo tenga (M-N)=2 puntos. El resultado sería:

Puntos: a,b,c.
Grupo1 = (a,B)    
Grupo2 = (a,c)
Grupo3 = (b,c)

Hay una función combinatoria que se escribe algo así como (M N) y que me calcula el número de grupos que saldrían, que en este caso serían 3. Eso lo sé hacer. Lo que no sé hacer es COMO FORMAR los grupitos, cómo asociar los puntos de forma correcta  :blink:
Título: Re: Cómo Formar Grupos?
Publicado por: sergiotarrillo en Viernes 3 de Diciembre de 2004, 01:02
ya has intenado con arreglos multidimensionales y con for, aunque derepente solo se puede con arreglos dimensionales.....
Título: Re: Cómo Formar Grupos?
Publicado por: patpite en Domingo 5 de Diciembre de 2004, 13:20
No hay forma, Serghio :( Estoy intentándolo con dos bucles for anidados, pero no hay manera. ¡AGH! Necesito ayuda, porque sin ese paso me quedo atascada y no puedo seguir para terminar el proyecto.

¡Por favor! ¡Ayudaaaa!