Visual Basic para Aplicaciones - COMBINACIONES

Life is soft - evento anual de software empresarial
 
Vista:

COMBINACIONES

Publicado por JOSE ANTONIO (4 intervenciones) el 02/06/2014 18:06:37
HOLA OS PEDIRIA SI ME PODEIS ENVIAR UNA FORMULA PARA LA COMBINACION DE 49 NUMEROS (DEL 1 AL 49)EN GRUPOS DE SIETE
EJEMPLO:
1 2 3 4 5 6 7
1 2 3 4 5 6 8
1 2 3 4 5 6 9
HASTA
43 44 45 46 47 48 49
GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Oscar

COMBINACIONES

Publicado por Oscar (14 intervenciones) el 03/06/2014 10:36:02
La combinación de que nos comentas se fácil de realizar pero no has aclarado 2 puntos vitales:

Se permite la repetición (por lo ejemplos que pones parece que no, pero no lo especificas)
Importa el orden (es lo mismo 1234567 que 7654321 o es diferente)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

COMBINACIONES

Publicado por jose antonio (4 intervenciones) el 04/06/2014 14:45:37
HOLA OSCAR TE ESTOY AGRADECIDO POR EL INTERES
COMO ME DICES NO ESPECIPIQUE CORRECTAMENTE
LA IDEA SERIA QUE NO SE REPITAN Y QUE SIGAN EL ORDEN
GRACIAS POR COLABORAR
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Oscar

COMBINACIONES

Publicado por Oscar (14 intervenciones) el 04/06/2014 15:58:48
En ese caso la opción más obvia sería la de utilizar 7 bucles anidados (uno para cada variable) el primero que vaya del 1 al 43, el siguiente que vaya desde el anterior +1 hasta 44 y así consecutivamente los siete.

Esa es la la fácil de ver pero es muy engorrosa sería más elegante hacerlo en una función recursiva y ocuparía mucho menos código (además de que, en general, una función recursiva siempre es igual o más eficiente que una iterativa).

Pero vamos que yendo por lo fácil 7 bucles for anidados (con el dolor a la vista que producen)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

COMBINACIONES

Publicado por jose antonio (4 intervenciones) el 04/06/2014 16:23:55
GRACIAS POR CONTESTAR
HOLA OSCAR ES QUE ESTOY PROBANDO CON ESTA Y ALGO HAGO MAL QUE NO ME LA DA CORRECTA:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Combinacion()
i = 1
For b1 = 1 To 43
    For b2 = b1 + 1 To 44
        For b3 = b2 + 1 To 45
            For b4 = b3 + 1 To 46
                For b5 = b4 + 1 To 47
                    For b6 = b5 + 1 To 48
                        For b7 = b6 + 1 To 49
                        Cells(i, 1) = b1
                        Cells(i, 2) = b2
                        Cells(i, 3) = b3
                        Cells(i, 4) = b4
                        Cells(i, 5) = b5
                        Cells(i, 6) = b6
                        Cells(i, 7) = b7
                        Range("E1") = i
                        i = i + 1
                        Next
                    Next
                Next
            Next
            End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Oscar

COMBINACIONES

Publicado por Oscar (14 intervenciones) el 04/06/2014 16:59:10
Haber tienes 7 bucles for y solo has cerrado cuatro de ellos con un next (sería bueno que los identificaras para no liarte).

Otra cosa, este procedimiento hace la friolera de casi 86 millones de combinaciones por lo que aunque el excel tuviera tantas filas (que va a ser que no, acaba en la fila 1 millon y poco) te generaria un excel de tamaño colosal varios gigas fácil

En texto plano cada numero (en formato texto sería 1 o 2 Bytes casi todos 2) eso X 7 numeros y por 86000000 hacen 1204000000 de Bytes poco mas de un giga, pero ademas el excel guarda información de formato por lo que el tamaño se te va a la porra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Oscar

COMBINACIONES

Publicado por Oscar (14 intervenciones) el 04/06/2014 18:18:08
Por pura curiosidad lo he lanzado yo (en un fichero de texto plano claro) y tras 20 minutos de proceso me ha dejado un fichero, repito de texto plano, que pesa 1'342 Gigas,. ahí es nada gg.

Mis cálculos no iban muy desencaminados, y es que no conté los saltos de linea, el resto cabecera, inicio, fin, etc es insignificante con estos tamaños de fichero.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

COMBINACIONES

Publicado por jose antonio (4 intervenciones) el 04/06/2014 19:03:00
MUCHAS GRACIAS POR LA ACLARACION
TE LO AGRADEZCO MUCHISIMO SOBRE TODO EL MENSAJE ESTE ULTIMO, NO LO HUBIERA PENSADO POR QUE AUN LA QUERIA LIAR MAS
ASIQUE ESO MUCHAS, POR INTERESARTE EN MIS DUDAS.ERES UN CRACK.
UN SALUDO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar