Autor Tema: Números cada vez más largos, duda.

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

27 Agosto, 2024, 06:59 am
Leído 812 veces

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Quiero hacer un programa que muestre números cada vez más largos (en caracteres, el punto y el - se cuentan), intercalándolos en ciertos casos.
Habría un límite pero no viene al caso.

En la 1er generación se mostrarán:
- Positivos de 1 cifra en la parte entera y 0 decimales.
0, 1, 2... 9

En la 2nda:
- Positivos de 2 cifras en enteros y 0 decimales.
- Negativos de 1 cifra en enteros y 0 decimales.
10, -1, 11, -2...

En la 3era:
- Positivos de 3 cifras en enteros y 0 decimales.
- Positivos de 1 cifra en enteros y 1 decimal.
- Negativos de 2 cifras en enteros y 0 decimales.
100, 0.1, -10...

En la 4ta:
- Positivos de 4 cifras en enteros y 0 decimales.
- Positivos de 2 cifras en enteros y 1 decimal.
- Positivos de 1 cifras en enteros y 2 decimales.
- Negativos de 3 cifras en enteros y 0 decimales.
- Negativos de 1 cifras en enteros y 1 decimales.

Nótese que en principio la cantidad de tipos de número (según el criterio mostrado) era igual a la generación, pero en la 4ta hay un extra.

Quisiera saber cuántos tipos de número aparecerán con cada nueva generación a partir de ahí. Si esa cantidad irá aumentando, quiero la fórmula.

31 Agosto, 2024, 07:25 am
Respuesta #1

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Tengo un nuevo enfoque en que ya no importa mucho lo que pregunté, quisiera que mejoren este código o digan cómo lo harían:

Al principio el programa debería mostrar 0, 1, 2, y así hasta 9. Números de largo 1.

Luego -1, 10, -2, 11... y así, son de largo 2 y se van intercalando, me refiero a que no se muestra 1ero todos los negativos de largo 2 y luego todos los positivos de largo 2, sino que muestra un negativo de largo 2, luego un positivo de largo 2, y se repite eso hasta que no hayan de largo 2.

Luego 0.1, -10, 100, 0.2, -11, 101... la idea es la misma.

Luego 0.01, -0.1, 10.1, -100, 1000... creo que son 5 tipos, la idea es la misma. Los que tienen más decimales van 1ero, si 2 tipos tienen igual cantidad va el negativo 1ero. Probablemente se me está escapando algo pero más o menos es eso.

Lo que se me ocurre es algo como:
Código: [Seleccionar]
Largo = 1
MaxDecimalesActual = 0
// El último positivo de 0 decimales que se mostró es -1 (digamos):
LastPositivode0 = -1
// El último negativo de 0 decimales que se mostró es 0 (digamos):
LastNegativode0 = 0
Repetir hasta que el usuario lo indique
   Decimales = -1
   Repetir mientras Decimales < MaxDecimales
      Decimales++
      Divisor = Decimales
      Resumen = "LastPositivode"+Decimales
      // Aquí hay que multiplicar y luego dividir para evitar inexactitudes:
      NuevoNumero = eval(Resumen)+(1/
      LargodelNuevoNumero = (obtenerlo)
      Si LargodelNuevoNumero == Largo
         // Actualizar el último número de su tipo:
         set(Resumen, ProximoNumero)
         mostrar ProximoNumero
      sino si LargodelNuevoNumero < Largo
         //
         NuevoNumero = eval(Resumen)+1
         set(Resumen, ProximoNumero)
Hasta ahí llegué por ahora porque al número habría que sumarle en un caso 1, en otro caso 0.1, o 0.01, y así, o restarle, así que el modificador es variable, no me había dado cuenta. Ahora bien, ese código tiene el problema de que estaría haciendo sumas a ver si el número del tipo de turno puede mostrarse, lo cual es poco eficiente. En el mismo loop también se chequearía para el negativo. La cantidad de decimales iría aumentando, se resetearía al llegar al máximo y en ese punto aumentaría el largo.

Lo seguiré pensando pero si se les ocurre alguna solución o sugerencia díganme cual.

31 Agosto, 2024, 03:52 pm
Respuesta #2

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,797
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
No está muy claro lo que hay que hacer.

El enunciado confuso es el problema para mí.
No se entiende en qué orden tienen que aparecer los números de un mismo tipo,
y en qué orden van los de distinto tipo.

Aún así, pareciera que mantener 5 variables, una para cada tipo de número sería suficiente,
y luego ir variando cada una según lo que le corresponda.

02 Septiembre, 2024, 09:41 am
Respuesta #3

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
A ver así:


Mira de izquierda a derecha, y luego bajando, como si fuese un texto común y corriente. En ese orden se deben mostrar en pantalla. Los rojos no porque ya se mostraron.

Pero no son sólo 5 columnas. Se irán agregando, en la izquierda.

¿Se entiende mejor ahora?

Yo creo que gracias a eso puedo responder la pregunta inicial, al principio cuando aumenta el largo sólo se agrega una columna, pero a partir de cierto punto son 2, y sólo 2, no aumenta más ese número.

En la columna más izquierda (que a partir de ese punto es siempre positiva) los números tienen X decimales, digamos.
Se agrega una a su izquierda con números negativos de X decimales.
Se agrega otra más, con números de X+1 decimales.

O sea a partir de cierto punto, en el código debe haber una repetición en que se agregan 2 variables, esos 2 tipos de número.

Por ahora tengo esto, luego sigo:
Código: [Seleccionar]
// Este programa produce números cada vez más largos,
// intercalándolos según el tipo,
// entre más decimales 1ero,
// y los negativos 1ero.
//
// El 0 aquí se refiere a la cantidad de decimales:
LastPositivode0 = -1
Decimales = 0
// 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.
MomentodeCambiar = 9;
// Esto se repite en el frame 2:
function Etapa2 () {
// Producir el 0 o un número positivo:
LastPositivode0++;
trace(LastPositivode0);
if (LastPositivode0 == MomentodeCambiar) {
// No hay más números de largo 1.
// Indicar nuevo momento de cambio:
MomentodeCambiar = 99;
// Crear negativo y avanzar etapa:
LastNegativode0 = 0;
gotoAndPlay(3);
}
}
// Esto se repite en el frame 3:
function Etapa3 () {
// ¿Se puede producir un número negativo de largo 2?
if (LastNegativode0 > -9) {
// Producir número negativo:
LastNegativode0--;
trace(LastNegativode0);
}
// Positivo:
LastPositivode0++;
trace(LastPositivode0);
if (LastPositivode0 == MomentodeCambiar) {
// No hay más números de largo 2.
// Indicar nuevo momento de cambio:
MomentodeCambiar = 999;
// Crear positivo de 1 decimal y avanzar etapa:
LastPositivode1 = 0;
gotoAndPlay(4);
}
}

02 Septiembre, 2024, 11:24 am
Respuesta #4

feriva

  • $$\Large \color{#a53f54}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 12,032
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino

Yo lo haría así:

Números de una cifra psoitivos y negativos (el cero va delante aparte, porque no tiene signo)

0

1

-1

2

-2

3

-2

etc, hasta -9

Números de dos cifras:

10

-10

11

-11

12

-12

etc, hasta -99.

Detrás vendrían los mismos, de dos cifras, pero con una coma; empezando por 0,1 y siguiendo por -0,1, análogamente a lo que ocurre con los otros.

Con los de tres cifras es igual, pero hay que considerar primero la coma de detrás de la primera cifra, “a,bc”, y después la de detrás de la segunda, “ab,c”.

Y así con más cifras.

Cada vez hay muchos más números según la cantidad de cifras, pero de esa manera vas escribiendo todos con un cierto orden sin que se te “pierda” ninguno.

Los números racionales no se pueden ordenar uno detrás de otro porque no existe eso, no existe el siguiente a un número racional. Pero así por cantidad de cifras y tal sí puedes.

Saludos.

02 Septiembre, 2024, 12:36 pm
Respuesta #5

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Pero el signo y la coma también suman en la longitud del número, al menos en este contexto, ya lo había dicho.

-1 tiene largo 2, por ejemplo.

19 Septiembre, 2024, 04:06 am
Respuesta #6

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Tengo un código. Funciona bien hasta la etapa 5. Esa etapa debería empezar así:
0.01
-0.1
10.1
-100
1000
y continuar sumando 1 a los positivos y restando 1 a los negativos.
Positivo de 2 decimales.
Negativo de 1 decimal.
Positivo de 1 decimal.
Negativo de 0 decimales.
Positivo de 0 decimales.

Pero por algún error o por errores inicia así:
0
0
9.9
-99
999
1000
y no muestra más números.

Si alguien encuentra el error favor dígame:
Código: [Seleccionar]
// 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);
}

23 Septiembre, 2024, 05:28 am
Respuesta #7

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Ya logré esto.
Código: [Seleccionar]
// 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 = 2;
Decimales = 2;
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;
// trace("Resumen: "+Resumen);
Evalued = eval(Resumen);
// trace("Evalued: "+Evalued);
if (Evalued<eval("MaxPositivoDe"+Decimales)) {
// Sí, producirlo:
Evalued++;
// ¿Termina en 0?:
Textualizado = String(Evalued);
LastChar = Textualizado.charat(Textualizado.length-1);
if (LastChar == 0) {
// Sí, ergo al convertirlo a decimales...
// no será del largo requerido, arreglarlo:
Evalued++;
}
Decimaleado = Evalued/Math.pow(10, Decimales);
trace (Decimaleado);
// Guardarlo en la lista:
set (Resumen, Evalued);
}
do {
// Repetir mientras Decimales > 0:
Decimales--;
// ¿Se puede producir un número negativo de X decimales y largo Y?
Resumen = "LastNegativoDe"+Decimales;
// trace("Resumen: "+Resumen);
Evalued = eval(Resumen);
// trace("Evalued: "+Evalued);
if (Evalued>eval("MaxNegativoDe"+Decimales)) {
// Sí, producirlo:
Evalued--;
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 será de largo Y, arreglarlo:
Evalued--;
}
}
Decimaleado = Evalued/Math.pow(10, Decimales);
trace (Decimaleado);
// Guardarlo en la lista:
set (Resumen, Evalued);
}
// ¿Se puede producir un número positivo de X decimales y largo Y?
// X = Decimales.
Resumen = "LastPositivoDe"+Decimales;
// trace("Resumen: "+Resumen);
Evalued = eval(Resumen);
// trace("Evalued: "+Evalued);
if (Evalued<eval("MaxPositivoDe"+Decimales)) {
// Sí, producirlo:
Evalued++;
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 Y, arreglarlo:
Evalued++;
}
}
Decimaleado = Evalued/Math.pow(10, Decimales);
trace (Decimaleado);
// Guardarlo en la lista:
set (Resumen, Evalued);
}
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);
Decimales = MaxDecimales;
}
Al menos hasta donde probé, ese último if no llegó a ejecutarse.

He aquí el resultado a partir de la etapa 5:
0.01
-0.1
10.1
-100
1000
0.02
-0.2
10.2
-101
1001
0.03
-0.3
10.3
-102
1002
Y sigue.

Los errores que recuerdo eran:
- Había puesto "de" en vez de "De" en una parte.
- Modificaba Resumen, está bien, pero lo que necesitaba modificar en ese momento era Evalued.
- No ponía que Decimales vuelva a ser MaxDecimales.

No sé simplificar el programa, que sean menos etapas, y no sé si conviene.

Es probable que requiera una etapa 6 o algún límite para el largo de los números que produce.

También es probable que la parte de "Indicar nuevos máximos" en la etapa 5 esté mal, lo voy a consultar, pero bueno, ya está.