Cursor1 = SCs;
en el 2ndo fotograma, o sea acá:
Código:
if (eval("SC"+Cursor1+"P"+Cursor2)<MaxValor) {
set ("SC"+Cursor1+"P"+Cursor2, eval("SC"+Cursor1+"P"+Cursor2)+1);
PrintCond();
ACÁAAAAAAAAAAAAAAAAAAAA Cursor1 = SCs;
Cursor2 = 3;
Con eso se marca que el valor a modificarse será el de la última subcondición (la que esté más a la derecha).set ("SC"+Cursor1+"P"+Cursor2, eval("SC"+Cursor1+"P"+Cursor2)+1);
PrintCond();
ACÁAAAAAAAAAAAAAAAAAAAA Cursor1 = SCs;
Cursor2 = 3;
Y en el while del fotograma 1 había que poner Print al inicio en vez de al final:
Código:
while (Cursor3<SCs) {
if (eval("SC"+Cursor3+"P2")<5) {
Print = "V"+eval("SC"+Cursor3+"P1")+eval("Op"+eval("SC"+Cursor3+"P2"))+"V"+eval("SC"+Cursor3+"P3")+eval("Rel"+eval("SC"+Cursor3+"P4"))+Print;
} else {
Print = "V"+eval("SC"+Cursor3+"P3")+eval("Op"+(eval("SC"+Cursor3+"P2")-4))+"V"+eval("SC"+Cursor3+"P1")+eval("Rel"+eval("SC"+Cursor3+"P4"))+Print;
}
Cursor3 = Cursor3+1;
}
if (eval("SC"+Cursor3+"P2")<5) {
Print = "V"+eval("SC"+Cursor3+"P1")+eval("Op"+eval("SC"+Cursor3+"P2"))+"V"+eval("SC"+Cursor3+"P3")+eval("Rel"+eval("SC"+Cursor3+"P4"))+Print;
} else {
Print = "V"+eval("SC"+Cursor3+"P3")+eval("Op"+(eval("SC"+Cursor3+"P2")-4))+"V"+eval("SC"+Cursor3+"P1")+eval("Rel"+eval("SC"+Cursor3+"P4"))+Print;
}
Cursor3 = Cursor3+1;
}
O sea quedaría así:
Print = Print + "V"+eval("SC"+Cursor3+"P1")+eval("Op"+eval("SC"+Cursor3+"P2"))+"V"+eval("SC"+Cursor3+"P3")+eval("Rel"+eval("SC"+Cursor3+"P4"));
Y:
Print = Print + "V"+eval("SC"+Cursor3+"P3")+eval("Op"+(eval("SC"+Cursor3+"P2")-4))+"V"+eval("SC"+Cursor3+"P1")+eval("Rel"+eval("SC"+Cursor3+"P4"));
Les dejo una versión simplificada, o sea, esta usa los 6 símbolos en vez de 4 e invertir. La diferencia es que no hay ifs en la función PrintCond.
Código:
Escena 1
actions for fotograma 1
// Subcondiciones en la condición.
SCs = 1;
// Valores de las partes de la SC.
SC1P1 = 1;
SC1P2 = 1;
SC1P3 = 0;
// Cosas para evitar ifs.
Op1 = " < ";
Op2 = " <= ";
Op3 = " == ";
Op4 = " != ";
Op5 = " => ";
Op6 = " > ";
Rel1 = " && ";
Rel2 = " or ";
Cursor1 = 1;
Cursor2 = 3;
function PrintCond () {
Cursor3 = 1;
Print = "";
while (Cursor3<SCs) {
Print = Print+"V"+eval("SC"+Cursor3+"P1")+eval("Op"+eval("SC"+Cursor3+"P2"))+"V"+eval("SC"+Cursor3+"P3")+eval("Rel"+eval("SC"+Cursor3+"P4"));
Cursor3 = Cursor3+1;
}
// Eso traduce los valores en variables o símbolos y los va concatenando.
Print = Print+"V"+eval("SC"+Cursor3+"P1")+eval("Op"+eval("SC"+Cursor3+"P2"))+"V"+eval("SC"+Cursor3+"P3");
// Eso es la subcondición final, la que no tiene parte 4 ("&&" o "or").
trace (Print);
}
actions for fotograma 2
if (Cursor2 == 1 or Cursor2 == 3) {
MaxValor = SCs*2;
} else if (Cursor2 == 2) {
MaxValor = 6;
} else {
MaxValor = 2;
}
// Máximo valor de la parte donde esté el cursor 2. Si por ejemplo es la parte 2 su máximo valor es 6, o sea los 6 posibles operadores.
if (eval("SC"+Cursor1+"P"+Cursor2)<MaxValor) {
// Si el valor señalado puede aumentar.
set ("SC"+Cursor1+"P"+Cursor2, eval("SC"+Cursor1+"P"+Cursor2)+1);
PrintCond();
Cursor1 = SCs;
Cursor2 = 3;
// Aumenta, se muestra y se resetean los cursores.
} else {
// El valor se resetea.
set ("SC"+Cursor1+"P"+Cursor2, 1);
if (Cursor2>1) {
// Si el cursor 2 puede retroceder, o sea marcar una parte más en la izquierda, se reduce.
Cursor2 = Cursor2-1;
} else if (Cursor1>1) {
// Sino, si el cursor 1 puede retroceder, se reduce. El cursor 1 marca la subcondición y la el 2 marca la parte (variable1, operador, variable2, relación. En vez de operador debería decir comparador, no me di cuenta). Y el cursor 2 se queda al máximo (marcando la parte más a la derecha de la subcondición, la relación "&&" o "or").
Cursor1 = Cursor1-1;
Cursor2 = 4;
} else {
// Sino, se crea la parte relación o 4 de la última subcondición (derecha), aumenta la cantidad de subcondiciones, los cursores quedan al máximo (en la derecha), se crea una nueva subcondición, de 3 partes, y se muestra todo.
set ("SC"+SCs+"P4", 1);
SCs = SCs+1;
Cursor1 = SCs;
Cursor2 = 3;
set ("SC"+SCs+"P1", 1);
set ("SC"+SCs+"P2", 1);
set ("SC"+SCs+"P3", 1);
PrintCond();
}
}
actions for fotograma 3
gotoAndPlay (2);
La cantidad de condiciones que muestra es abrumadora. Aunque claro muchas son repetidas y son simplonas. Por algo se empieza...actions for fotograma 1
// Subcondiciones en la condición.
SCs = 1;
// Valores de las partes de la SC.
SC1P1 = 1;
SC1P2 = 1;
SC1P3 = 0;
// Cosas para evitar ifs.
Op1 = " < ";
Op2 = " <= ";
Op3 = " == ";
Op4 = " != ";
Op5 = " => ";
Op6 = " > ";
Rel1 = " && ";
Rel2 = " or ";
Cursor1 = 1;
Cursor2 = 3;
function PrintCond () {
Cursor3 = 1;
Print = "";
while (Cursor3<SCs) {
Print = Print+"V"+eval("SC"+Cursor3+"P1")+eval("Op"+eval("SC"+Cursor3+"P2"))+"V"+eval("SC"+Cursor3+"P3")+eval("Rel"+eval("SC"+Cursor3+"P4"));
Cursor3 = Cursor3+1;
}
// Eso traduce los valores en variables o símbolos y los va concatenando.
Print = Print+"V"+eval("SC"+Cursor3+"P1")+eval("Op"+eval("SC"+Cursor3+"P2"))+"V"+eval("SC"+Cursor3+"P3");
// Eso es la subcondición final, la que no tiene parte 4 ("&&" o "or").
trace (Print);
}
actions for fotograma 2
if (Cursor2 == 1 or Cursor2 == 3) {
MaxValor = SCs*2;
} else if (Cursor2 == 2) {
MaxValor = 6;
} else {
MaxValor = 2;
}
// Máximo valor de la parte donde esté el cursor 2. Si por ejemplo es la parte 2 su máximo valor es 6, o sea los 6 posibles operadores.
if (eval("SC"+Cursor1+"P"+Cursor2)<MaxValor) {
// Si el valor señalado puede aumentar.
set ("SC"+Cursor1+"P"+Cursor2, eval("SC"+Cursor1+"P"+Cursor2)+1);
PrintCond();
Cursor1 = SCs;
Cursor2 = 3;
// Aumenta, se muestra y se resetean los cursores.
} else {
// El valor se resetea.
set ("SC"+Cursor1+"P"+Cursor2, 1);
if (Cursor2>1) {
// Si el cursor 2 puede retroceder, o sea marcar una parte más en la izquierda, se reduce.
Cursor2 = Cursor2-1;
} else if (Cursor1>1) {
// Sino, si el cursor 1 puede retroceder, se reduce. El cursor 1 marca la subcondición y la el 2 marca la parte (variable1, operador, variable2, relación. En vez de operador debería decir comparador, no me di cuenta). Y el cursor 2 se queda al máximo (marcando la parte más a la derecha de la subcondición, la relación "&&" o "or").
Cursor1 = Cursor1-1;
Cursor2 = 4;
} else {
// Sino, se crea la parte relación o 4 de la última subcondición (derecha), aumenta la cantidad de subcondiciones, los cursores quedan al máximo (en la derecha), se crea una nueva subcondición, de 3 partes, y se muestra todo.
set ("SC"+SCs+"P4", 1);
SCs = SCs+1;
Cursor1 = SCs;
Cursor2 = 3;
set ("SC"+SCs+"P1", 1);
set ("SC"+SCs+"P2", 1);
set ("SC"+SCs+"P3", 1);
PrintCond();
}
}
actions for fotograma 3
gotoAndPlay (2);
Aquí he reducido el número de posibles valores. O sea, con 2 subcondiciones son
4*6*4*2*4*6*4
que según calculé son 9216 posibilidades (con repeticiones y chorradas, luego las intentaré evitar).
Pero en esta versión es
2*2*2*2*2*2*2
Así es el resultado:
[spoiler]V1 < V1
V1 < V2
V1 <= V1
V1 <= V2
V2 < V1
V2 < V2
V2 <= V1
V2 <= V2
V1 < V1 && V1 < V1
V1 < V1 && V1 < V2
V1 < V1 && V1 <= V1
V1 < V1 && V1 <= V2
V1 < V1 && V2 < V1
V1 < V1 && V2 < V2
V1 < V1 && V2 <= V1
V1 < V1 && V2 <= V2
V1 < V1 or V1 < V1
V1 < V1 or V1 < V2
V1 < V1 or V1 <= V1
V1 < V1 or V1 <= V2
V1 < V1 or V2 < V1
V1 < V1 or V2 < V2
V1 < V1 or V2 <= V1
V1 < V1 or V2 <= V2
V1 < V2 && V1 < V1
V1 < V2 && V1 < V2
V1 < V2 && V1 <= V1
V1 < V2 && V1 <= V2
V1 < V2 && V2 < V1
V1 < V2 && V2 < V2
V1 < V2 && V2 <= V1
V1 < V2 && V2 <= V2
V1 < V2 or V1 < V1
V1 < V2 or V1 < V2
V1 < V2 or V1 <= V1
V1 < V2 or V1 <= V2
V1 < V2 or V2 < V1
V1 < V2 or V2 < V2
V1 < V2 or V2 <= V1
V1 < V2 or V2 <= V2
V1 <= V1 && V1 < V1
V1 <= V1 && V1 < V2
V1 <= V1 && V1 <= V1
V1 <= V1 && V1 <= V2
V1 <= V1 && V2 < V1
V1 <= V1 && V2 < V2
V1 <= V1 && V2 <= V1
V1 <= V1 && V2 <= V2
V1 <= V1 or V1 < V1
V1 <= V1 or V1 < V2
V1 <= V1 or V1 <= V1
V1 <= V1 or V1 <= V2
V1 <= V1 or V2 < V1
V1 <= V1 or V2 < V2
V1 <= V1 or V2 <= V1
V1 <= V1 or V2 <= V2
V1 <= V2 && V1 < V1
V1 <= V2 && V1 < V2
V1 <= V2 && V1 <= V1
V1 <= V2 && V1 <= V2
V1 <= V2 && V2 < V1
V1 <= V2 && V2 < V2
V1 <= V2 && V2 <= V1
V1 <= V2 && V2 <= V2
V1 <= V2 or V1 < V1
V1 <= V2 or V1 < V2
V1 <= V2 or V1 <= V1
V1 <= V2 or V1 <= V2
V1 <= V2 or V2 < V1
V1 <= V2 or V2 < V2
V1 <= V2 or V2 <= V1
V1 <= V2 or V2 <= V2
V2 < V1 && V1 < V1
V2 < V1 && V1 < V2
V2 < V1 && V1 <= V1
V2 < V1 && V1 <= V2
V2 < V1 && V2 < V1
V2 < V1 && V2 < V2
V2 < V1 && V2 <= V1
V2 < V1 && V2 <= V2
V2 < V1 or V1 < V1
V2 < V1 or V1 < V2
V2 < V1 or V1 <= V1
V2 < V1 or V1 <= V2
V2 < V1 or V2 < V1
V2 < V1 or V2 < V2
V2 < V1 or V2 <= V1
V2 < V1 or V2 <= V2
V2 < V2 && V1 < V1
V2 < V2 && V1 < V2
V2 < V2 && V1 <= V1
V2 < V2 && V1 <= V2
V2 < V2 && V2 < V1
V2 < V2 && V2 < V2
V2 < V2 && V2 <= V1
V2 < V2 && V2 <= V2
V2 < V2 or V1 < V1
V2 < V2 or V1 < V2
V2 < V2 or V1 <= V1
V2 < V2 or V1 <= V2
V2 < V2 or V2 < V1
V2 < V2 or V2 < V2
V2 < V2 or V2 <= V1
V2 < V2 or V2 <= V2
V2 <= V1 && V1 < V1
V2 <= V1 && V1 < V2
V2 <= V1 && V1 <= V1
V2 <= V1 && V1 <= V2
V2 <= V1 && V2 < V1
V2 <= V1 && V2 < V2
V2 <= V1 && V2 <= V1
V2 <= V1 && V2 <= V2
V2 <= V1 or V1 < V1
V2 <= V1 or V1 < V2
V2 <= V1 or V1 <= V1
V2 <= V1 or V1 <= V2
V2 <= V1 or V2 < V1
V2 <= V1 or V2 < V2
V2 <= V1 or V2 <= V1
V2 <= V1 or V2 <= V2
V2 <= V2 && V1 < V1
V2 <= V2 && V1 < V2
V2 <= V2 && V1 <= V1
V2 <= V2 && V1 <= V2
V2 <= V2 && V2 < V1
V2 <= V2 && V2 < V2
V2 <= V2 && V2 <= V1
V2 <= V2 && V2 <= V2
V2 <= V2 or V1 < V1
V2 <= V2 or V1 < V2
V2 <= V2 or V1 <= V1
V2 <= V2 or V1 <= V2
V2 <= V2 or V2 < V1
V2 <= V2 or V2 < V2
V2 <= V2 or V2 <= V1
V2 <= V2 or V2 <= V2
V1 < V1 && V1 < V1 && V1 < V1
V1 < V1 && V1 < V1 && V1 < V2
V1 < V1 && V1 < V1 && V1 <= V1
V1 < V1 && V1 < V1 && V1 <= V2
[/spoiler] Y sigue. ¿Errores? Si no aviso, es que no veo.


