(Solucionado) S strings variando su contenido.

Iniciado por Tachikomaia, 27 Octubre 2019, 05:44 AM

0 Miembros y 1 Visitante están viendo este tema.

Tachikomaia

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

Esto es variar 1 variable número:
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:
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).
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:
// 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:
// 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:
C3P1 = 0;
C3Largo = 1;
C3 = "A";
Max = "ZZ";
CtoUp = 3;


Y supongo que en vez de esto:
   // ¿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.

Tachikomaia

Esto funciona:
// 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:
CitarA 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.