Autor
|
Tema: 1) Aumento infinito de 2 variables. 2) De más de 2. (Leído 4,339 veces)
|
Tachikomaia
Conectado
Mensajes: 1.417
Hackentifiko!
|
Son 2 códigos distintos, aunque obviamente el 2ndo implicaría al 1ero, así que si sólo quieren hacer uno hagan ese.
En cuanto al significado, es que quiero un código que haga algo así: (output) V1=1, V2=1, V3=1 V1=1, V2=1, V3=2 V1=1, V2=2, V3=1 V1=1, V2=2, V3=2 V1=2, V2=1, V3=1 V1=2, V2=1, V3=2 V1=2, V2=2, V3=2 V1=1, V2=1, V3=3 Y siga
Es decir, hacer combinatoria implicando un número máximo, que aumenta cuando cada variable alcanza ese máximo.
Gracias.
|
|
|
En línea
|
|
|
|
Usuario887
Desconectado
Mensajes: 310
|
Hola. Esto puedes lograrlo con clases o funciones recursivas (o redundantes, como les llamo yo)... Un ejemplo en ASM: proc numericalIncrement push bp push si push di push bx ;addr at bp+18 ;cnt init at bp+16 ;cnt max at bp+14 ;min at bp+12 ;max at bp+10 mov bp, sp ;addr starts at bp-2 sub sp, 2 mov si, ss:[bp+18] mov bx, ss:[bp+16] mov ax, ss:[bp+14] cmp ax, bx jz numericalIncrement_err0 jmp numericalIncrement_stepOver0 numericalIncrement_err0: mov ax, 0 jmp numericalIncrement_return numericalIncrement_stepOver0: mov ax, ss:[bp+10] cmp al, byte ptr ss:[si+bx] jnz numericalIncrement_skip0 mov al, byte ptr ss:[bp+12] mov byte ptr ss:[si+bx], al mov ax, ss:[bp+18] push ax mov ax, ss:[bp+16] inc ax ;next ch push ax mov ax, ss:[bp+14] push ax mov ax, ss:[bp+12] push ax mov ax, ss:[bp+10] push ax call numericalIncrement pop ax jmp numericalIncrement_return numericalIncrement_skip0: mov al, byte ptr ss:[si+bx] inc al mov byte ptr ss:[si+bx], al mov ax, 1 numericalIncrement_return: mov ss:[bp+18], ax mov sp, bp pop bx pop di pop si pop bp ret 2*4 endp
la funcion toma como parametros la cadena de variables, el valor minimo de la combinatoria, el valor maximo de la misma, el contador inicial en la cadena y el contador final de la misma respectivamente. Tambien la tengo en C; te la muestro en ASM porque fue la forma mas eficiente para mi de escribir el algoritmo... Saludos.
Ah, y retorna en la pila 1 si fue efectiva o 0 si hubo un error (numericalIncrement_err0). Mas que incremento numerico creo que seria mejor llamada incremento combinatorial, pero el punto es el punto. Aqui un ejemplo utilizando Windows, con una cadena de 4 variables byte ( char) inicializada como 'a','a','a','a'. el minimo es el codigo ASCII del caracter 'a' y el maximo el respectivo al caracter 'z'; el inicio del contador es 0 y el maximo del mismo es 3: https://i.imgur.com/k8EIqjG.pnghttps://i.imgur.com/WYk2uax.png
|
|
« Última modificación: 26 Agosto 2020, 11:54 am por marax »
|
En línea
|
|
|
|
Tachikomaia
Conectado
Mensajes: 1.417
Hackentifiko!
|
Gracias pero no entiendo el code.
|
|
|
En línea
|
|
|
|
Usuario887
Desconectado
Mensajes: 310
|
Dices; primero, aumento infinito de dos variables; luego, aumento de mas de dos. No son dos preguntas diferentes, es lo mismo; por tanto se aplica en este caso una funcion recursiva, es decir, que se llama a si misma, porque su "metodo" yace en si misma. Supone una cadena de valores con un sistema numerico en base 3. Supone una combinacion de tales cifras asi: 1,1,1 Aumento se define asi: aumento (cadena_de_valores, valor_inicial, valor_final, contador_actual, contador_final) { si (cadena_de_valores[contador_actual] es menor o igual que valor_final) entonces { incrementar cadena_de_valores[contador_actual] retornar contador_actual; } si no { aumento (cadena_de_valores, valor_inicial, valor_final, contador_actual+1, contador_final) } } si ejecutas aumento con la cadena antes mencionada una vez (llamemosle a esas "veces" instantes), la cadena resultaria: 1,1,2 luego, entonces, de cada instante: 1,1,3 1,2,1 1,2,2 1,2,3 1,3,1 ...
si ejecutas aumento con la cadena antes mencionada Por cierto, la llamada a la funcion del pseudocodigo seria de esta forma: ... cadena=1,2,3 ... aumento (cadena, 1, 3, 0, 2)
|
|
« Última modificación: 31 Agosto 2020, 21:11 pm por marax »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pasar variables por formulario sin variables globales¿?
« 1 2 »
PHP
|
hardkoo
|
11
|
9,709
|
22 Noviembre 2006, 12:55 pm
por chicuela66
|
|
|
[BATCH] ¿Como puedo meter variables dentro de variables?
Scripting
|
Meine programmen
|
1
|
4,134
|
24 Marzo 2012, 16:48 pm
por Eleкtro
|
|
|
¿Como crear variables en C# que coincidan con las variables de un servidor sql?
.NET (C#, VB.NET, ASP)
|
dr4
|
0
|
2,143
|
22 Mayo 2015, 13:15 pm
por dr4
|
|
|
Pasar variables de entorno a variables del sistema
Scripting
|
Scry
|
0
|
2,073
|
16 Mayo 2017, 11:09 am
por Scry
|
|
|
error, bucle infinito, alguien que me ayude a evitar el bucle infinito
Programación C/C++
|
marcos0204
|
4
|
2,865
|
27 Marzo 2020, 22:44 pm
por fary
|
|