// Este programa produce números cada vez más largos,
// intercalándolos según el tipo,
// entre más decimales 1ero,
// y secundariamente los negativos 1ero.
//
// El 0 aquí se refiere a la cantidad de decimales
// (pero los números se guardan como enteros):
LastPositivode0 = -1;
// El programa tiene 5 etapas:
// 1: Esta, donde sólo se definen cosas.
// 2: Produce el 0 y números positivos de 0 decimales.
// 3: Negativos y positivos, de 0 decimales.
// 4: Positivos de 1, negativos y positivos de 0.
// 5: Va creando 2 tipos de número.
// Variables como esta determinan cuánto dura cada etapa,
// o cuando se crean listas y sus máximos valores:
MaxPositivoDe0 = 9;
// Esto se repite en el frame 2:
function Etapa2 () {
// Producir el 0 o un número positivo:
LastPositivode0++;
trace (LastPositivode0);
if (LastPositivode0 == MaxPositivoDe0) {
// No hay más números de largo 1,
// crear lista de negativos:
LastNegativode0 = 0;
// Indicar nuevos máximos:
MaxPositivoDe0 = 99;
MaxNegativoDe0 = -9;
// Avanzar etapa:
gotoAndStop (3);
}
}
// Esto se repite en el frame 3:
function Etapa3 () {
// ¿Se puede producir un número negativo de largo 2?
if (LastNegativode0>MaxNegativoDe0) {
// Sí, producirlo:
LastNegativode0--;
trace (LastNegativode0);
}
// Positivo:
LastPositivode0++;
trace (LastPositivode0);
if (LastPositivode0 == MaxPositivoDe0) {
// No hay más números de largo 2.
// crear lista de positivos de 1 decimal:
LastPositivode1 = 0;
// Indicar nuevos máximos:
MaxPositivoDe0 = 999;
MaxNegativoDe0 = -99;
// Recuérdese que las listas de decimales...
// son guardadas como enteros.
MaxPositivoDe1 = 99;
// Avanzar etapa:
gotoAndStop (4);
}
}
// Esto se repite en el frame 4:
function Etapa4 () {
// ¿Se pueda producir un número positivo de 1 decimal y largo 3?
if (LastPositivode1<MaxPositivoDe1) {
// Sí, producirlo:
LastPositivode1++;
// ¿Termina en 0?:
Textualizado = String(LastPositivode1);
LastChar = Textualizado.charat(Textualizado.length-1);
if (LastChar == 0) {
// Sí, ergo al convertirlo a decimales...
// no tendrá largo 3, arreglarlo:
LastPositivode1++;
}
Decimaleado = LastPositivode1/10;
trace (Decimaleado);
}
// ¿Se puede producir un número negativo de largo 3?
if (LastNegativode0>MaxNegativoDe0) {
// Sí, producirlo:
LastNegativode0--;
trace (LastNegativode0);
}
// Positivo:
LastPositivode0++;
trace (LastPositivode0);
if (LastPositivode0 == MaxPositivoDe0) {
// No hay más números de largo 3,
// crear nuevas listas:
LastPositivode2 = 0;
LastNegativode1 = 0;
// Indicar nuevos máximos:
MaxPositivoDe0 = 9999;
MaxNegativoDe0 = -999;
MaxPositivoDe1 = 999;
MaxNegativoDe1 = -99;
MaxPositivoDe2 = 999;
// Para la siguiente etapa:
MaxDecimales = 3;
Decimales = 3;
trace("Inicia la 5");
gotoAndStop (5);
}
}
// Esto se repite en el frame 5:
function Etapa5 () {
// ¿Se puede producir un número positivo de X decimales y largo Y?
// X = Decimales.
Resumen = "LastPositivode"+Decimales;
Evalued = eval(Resumen);
if (Evalued<eval("MaxPositivode"+Decimales)) {
// Sí, producirlo:
set (Resumen, Evalued+1);
// ¿Termina en 0?:
Textualizado = String(Evalued);
LastChar = Textualizado.charat(Textualizado.length-1);
if (LastChar == 0) {
// Sí, ergo al convertirlo a decimales...
// no tendrá largo 3, arreglarlo:
set (Resumen, Evalued+1);
}
Decimaleado = Evalued/Math.pow(10, Decimales);
trace (Decimaleado);
}
do {
// Repetir mientras Decimales > 0:
Decimales--;
// ¿Se puede producir un número negativo de X decimales y largo Y?
Resumen = "LastNegativode"+Decimales;
Evalued = eval(Resumen);
if (Evalued>eval("MaxNegativode"+Decimales)) {
// Sí, producirlo:
set (Resumen, Evalued-1);
if (Decimales>0) {
// ¿Termina en 0?:
Textualizado = String(Evalued);
LastChar = Textualizado.charat(Textualizado.length-1);
if (LastChar == 0) {
// Sí, ergo al convertirlo a decimales...
// no tendrá largo 3, arreglarlo:
set (Resumen, Evalued-1);
}
}
Decimaleado = Evalued/Math.pow(10, Decimales);
trace (Decimaleado);
}
// ¿Se puede producir un número positivo de X decimales y largo Y?
// X = Decimales.
Resumen = "LastPositivode"+Decimales;
Evalued = eval(Resumen);
if (Evalued<eval("MaxPositivode"+Decimales)) {
// Sí, producirlo:
set (Resumen, Evalued+1);
if (Decimales>0) {
// ¿Termina en 0?:
Textualizado = String(Evalued);
LastChar = Textualizado.charat(Textualizado.length-1);
if (LastChar == 0) {
// Sí, ergo al convertirlo a decimales...
// no tendrá largo 3, arreglarlo:
set (Resumen, Evalued+1);
}
}
Decimaleado = Evalued/Math.pow(10, Decimales);
trace (Decimaleado);
}
if (LastPositivode0 == MaxPositivoDe0) {
// INDICAR SI CONTINÚA O PARA:
// No hay más números de largo Y.
// crear listas para números más largos:
MaxDecimales++;
set ("LastPositivode"+MaxDecimales, 0);
set ("LastNegativode"+MaxDecimales, 0);
// Indicar nuevos máximos:
MaxPositivoDe0 = Math.pow(10, Decimales+1)-1;
MaxNegativoDe0 = Math.pow(10, Decimales)*-1+1;
Decimales = 0;
Maximo1 = Math.pow(10, Decimales)-1;
Maximo2 = Math.pow(10, Decimales-1)*-1+1;
do {
Decimales++;
set ("MaxPositivode"+Decimales, Maximo1);
set ("MaxNegativode"+Decimales, Maximo2);
} while (Decimales<MaxDecimales);
}
} while (Decimales>0);
}