elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  (Solucionado) S strings variando su contenido.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Solucionado) S strings variando su contenido.  (Leído 2,448 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.390


Hackentifiko!


Ver Perfil
(Solucionado) S strings variando su contenido.
« en: 27 Octubre 2019, 05:44 am »

Por problemas emocionales me cuesta concentrarme y además esto está difícil.

Esto es variar 1 variable número:
Código:
C = 1;	

// Candmod
C = C+1;

gotoAndPlay (2);
Pueden usar do while, en los siguientes también. En estos códigos una línea en blanco representa un paso, como en Basic. En algunos casos uso varios pasos para que ninguno sea especialmente largo (ocurre si tienen do while).

Esto es variar 2 variables número:
Código:
C1 = 1;	
C2 = 1;
Max = 10;

    if (C2<Max) {
        C2 = C2+1;
    } else if (C1<Max) {
        C2 = 1;
        C1 = C1+1;
    } else {
        stop ();
    }
}

gotoAndPlay (2);
Aquí hay un tope, pero tengo idea de cómo mejorar eso, no es el tema.

Esto es variar V variables número; en este caso V es 3 (se llama Parte).
Código:
C1 = 1;
C2 = 1;
C3 = 1;
Max = 10;

    Parte = 3;

if (eval("C"+Parte)<Max) {
    // Si el C señalado no está al máximo, aumenta
    set ("C"+Parte, eval("C"+Parte)+1);
    // Listo.
    gotoAndPlay (2);
}

// El C señalado no puede aumentar, se resetea
set ("C"+Parte, 1);
if (1<Parte) {
    // Hay un C anterior, se señala
    Parte = Parte-1;
    // Ver si el C señalado puede aumentar
    gotoAndPlay (3);
} else {
    stop ();
}

Esto es variación de 1 string:
Código:
// A~Z pero no Ñ
Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
CP1 = -1;
CLargo = 1;

W = 1;
Parte = CLargo;
do {
    if (eval("CP"+Parte)<25) {
        set ("CP"+Parte, eval("CP"+Parte)+1);
        W = 0;
    } else {
        set ("CP"+Parte, 0);
        if (1<Parte) {
            Parte = Parte-1;
        } else {
            CLargo = CLargo+1;
            set ("CP"+CLargo, 0);
            W = 0;
        }
    }
} while (W == 1);

// Concatenar.
C = "";
Parte = 0;
do {
    Parte = Parte+1;
    C = C+Chars.charAt(eval("CP"+Parte));
} while (Parte<CLargo);
gotoAndPlay (2);
Probablemente usarían un array para esto, yo no quiero.

Variación de 2 strings:
Código:
// A~Z pero no Ñ
Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
C1P1 = 0;
C1Largo = 1;
C1 = "A";
C2P1 = 0;
C2Largo = 1;
C2 = "A";
Max = "ZZ";
function CandMod () {
    W = 1;
    Parte = eval("C"+Up+"Largo");
    do {
        if (eval("C"+Up+"P"+Parte)<25) {
            set ("C"+Up+"P"+Parte, eval("C"+Up+"P"+Parte)+1);
            W = 0;
        } else {
            set ("C"+Up+"P"+Parte, 0);
            if (1<Parte) {
                Parte = Parte-1;
            } else {
                set ("C"+Up+"Largo", eval("C"+Up+"Largo")+1);
                set ("C"+Up+"P"+eval("C"+Up+"Largo"), 0);
                W = 0;
            }
        }
    } while (W == 1);
}

    // ¿qué Cand variar?
    if (C2 != Max) {
        Up = 2;
        CandMod();
    } else if (C1 != Max) {
        C2P1 = 0;
        C2Largo = 1;
        C2 = "A";
        Up = 1;
        CandMod();
    } else {
        stop ();
    }

// Concatenar.
set ("C"+Up, "");
Parte = 0;
do {
    Parte = Parte+1;
    set ("C"+Up, eval("C"+Up)+Chars.charAt(eval("C"+Up+"P"+Parte)));
} while (Parte<eval("C"+Up+"Largo"));
gotoAndPlay (2);

Variación de S strings es lo que estuve pensando (desconcentrándome porque estoy con la cabeza en otro lado) por horas ya.
Básicamente hay que "copiar" el método usado en 3 nums, pero como acá hay muchas más cosas no sé bien cómo. De momento agregué esto:
Código:
C3P1 = 0;	
C3Largo = 1;
C3 = "A";
Max = "ZZ";
CtoUp = 3;

Y supongo que en vez de esto:
Código:
    // ¿qué Cand variar?)	
    if (C2 != Max) {
        Up = 2;
        CandMod();
    } else if (C1 != Max) {
        C2P1 = 0;
        C2Largo = 1;
        C2 = "A";
        Up = 1;
        CandMod();
    } else {
        stop ();
    }
Debería hacer algo como que si "C"+CtoUp != Max entonces lo dicho aumenta (y ya se produce la variación), sino si CtoUp puede bajar se resetea lo relativo a C, CtoUp baja y el proceso que estoy describiendo debería repetirse, y sino stop.
Puede ser que sea eso. Tal vez, más que la solución o el código, me haría falta algo bastante distinto a como lo hice, o algo para no entreverarme tanto.

Como ven aún no apliqué soluciones a ordenar con Ñ, por ahora no me voy a complicar con eso.

Gracias.


« Última modificación: 5 Noviembre 2019, 18:07 pm por Tachikomaia » En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.390


Hackentifiko!


Ver Perfil
Re: S strings variando su contenido. ¿Cómo?
« Respuesta #1 en: 5 Noviembre 2019, 18:06 pm »

Esto funciona:
Código:
// A~Z pero no Ñ	
Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
C1CharID1 = 0;
C1Largo = 1;
C1 = "A";
C2CharID1 = 0;
C2Largo = 1;
C2 = "A";
C3CharID1 = 0;
C3Largo = 1;
C3 = "A";
Max = "ZZ";
function CandMod () {
    W = 1;
    SenaladordeChar = eval("C"+SenaladordeC+"Largo");
    do {
        if (eval("C"+SenaladordeC+"CharID"+SenaladordeChar)<25) {
            set ("C"+SenaladordeC+"CharID"+SenaladordeChar, eval("C"+SenaladordeC+"CharID"+SenaladordeChar)+1);
            W = 0;
        } else {
            set ("C"+SenaladordeC+"CharID"+SenaladordeChar, 0);
            if (1<SenaladordeChar) {
                SenaladordeChar = SenaladordeChar-1;
            } else {
                set ("C"+SenaladordeC+"Largo", eval("C"+SenaladordeC+"Largo")+1);
                set ("C"+SenaladordeC+"CharID"+eval("C"+SenaladordeC+"Largo"), 0);
                W = 0;
            }
        }
    } while (W == 1);
}

// Solcheck
if (C2<C1) {
    // Sol
    stop ();
} else {
    // Candmod (¿qué Cand variar?)
    W2 = 1;
    SenaladordeC = 3;
    do {
        if (eval("C"+SenaladordeC) != Max) {
            W2 = 0;
            CandMod();
        } else {
            set ("C"+SenaladordeC+"CharID1", 0);
            set ("C"+SenaladordeC+"Largo", 1);
            set ("C"+SenaladordeC, "A");
            if (1<SenaladordeC) {
                SenaladordeC = SenaladordeC-1;
            } else {
                // No hay Sol o está más allá del Max.
                stop ();
            }
        }
    } while (W2 == 1);
}

// Concatenar.
set ("C"+SenaladordeC, "");
SenaladordeChar = 0;
do {
    SenaladordeChar = SenaladordeChar+1;
    set ("C"+SenaladordeC, eval("C"+SenaladordeC)+Chars.charAt(eval("C"+SenaladordeC+"CharID"+SenaladordeChar)));
} while (SenaladordeChar<eval("C"+SenaladordeC+"Largo"));
gotoAndPlay (2);
Me tomaría mucho explicarlo ¨(incluso entenderlo; hace tiempo que no lo toco), el resultado es este:
Citar
A A A
A A B
A A C
A A D
A A E
A A F
A A G
A A H
A A I
A A J
A A K
Hasta A A Z, luego viene A A AA, y aumenta del mismo modo hasta A A ZZ (nótese que a principios del code dice Max="ZZ"), momento en que cambia a A B A.
Se varían 3 textos.

Pueden cerrar el tema, aunque se aceptan mejoras a los códigos expuestos.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines