Combinaciones en copro
Publicado por sabino (9 intervenciones) el 01/03/2014 01:44:22
He hecho una macro para calcular combinaciones matemáticas en modo convencional y tengo unas dudas para pasarlo a lenguaje de copro.
Quisiera poder calcular combinaciones, por ejemplo, de 3000 elementos de 10 en 10. Esto no me es posible dado lo enorme del resultado.
Cómo, dónde almacenaría el resultado para luego, por ejemplo, convertirlo a ASCII?. Cómo lo pasaría a ASCII?
Gracias aunque no tenga respuesta.
Quisiera poder calcular combinaciones, por ejemplo, de 3000 elementos de 10 en 10. Esto no me es posible dado lo enorme del resultado.
Cómo, dónde almacenaría el resultado para luego, por ejemplo, convertirlo a ASCII?. Cómo lo pasaría a ASCII?
Gracias aunque no tenga respuesta.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
NumCombis macro a,b
local otra,fuera,otra2
; Entrada: a=numeros, b=tipo combinaciones
; Salida: eax=total combinaciones
; combinaciones de a elementos tomados de b en b
; Combinaciones de 30 de 6 en 6
; NumCombis 30,6
push ebx
push ecx
push edx
xor edx,edx
mov ebx,a
sub ebx,b
inc ebx ; ebx=24 +1 =25
mov ecx,a ; ecx=30
mov eax,ecx ; eax=30
dec ecx ; ecx=29
otra:
cmp ecx,ebx ; ecx=ebx ?
jb fuera ; si es menor, sale del bucle
mul ecx ; multiplica eax por ecx 30x29x28x27x26x25
dec ecx ; resta 1 a ecx
jmp otra ; salta a la comparacion
fuera:
push eax ; guarda en la pila el resultado
push edx
mov ecx,b ; ecx=6
mov eax,ecx ; eax=6
dec ecx ; ecx= 5
otra2:
mul ecx ; multiplica eax por ecx 5 veces 6x5x4x3x2
loop otra2
mov ecx,eax ; ecx= eax = 6x5x4x3x2
pop edx ; saco de la pila 30x29x28x27x26x25
pop eax
div ecx ; lo divido por 6x5x4x3x2
pop edx
pop ecx
pop ebx
endm ; el resultado esta en eax
Valora esta pregunta


0