Creo que ya logré hacer que funcione básicamente bien, ahora intentaré que funcione mejor y mejorar el código en varios aspectos.
Escena 1
actions for fotograma 1
trace ("F1");
N = 0;
C = String(N).charat(N);
trace (N+" resulta "+C);
if (C == 0) {
trace ("para que C sea 0 usar N: "+N);
} else if (C == -9) {
trace ("para que C sea -9 usar N: "+N);
} else if (C == 4.5) {
trace ("para que C sea 4.5 usar N: "+N);
} else if (C == -7.2) {
trace ("para que C sea -7.2 usar N: "+N);
}
actions for fotograma 2
trace ("F2");
N = 9;
C = String(N).charat(N);
trace (N+" resulta "+C);
if (C == 0) {
trace ("para que C sea 0 usar N: "+N);
} else if (C == -9) {
trace ("para que C sea -9 usar N: "+N);
} else if (C == 4.5) {
trace ("para que C sea 4.5 usar N: "+N);
} else if (C == -7.2) {
trace ("para que C sea -7.2 usar N: "+N);
}
actions for fotograma 3
trace ("F3");
ListPart1 = 0;
ListPart2 = 9;
ListParts = 2;
actions for fotograma 4
trace ("F4");
Mayordistancia = 0;
Puntero = ListParts;
trace ("Produciendo un nuevo N...");
trace ("Puntero se ubica al final de la lista, en "+Puntero);
actions for fotograma 5
trace ("F5");
trace ("Buscando la mayor distancia entre las partes de la lista...");
Distancia = eval("ListPart"+Puntero)-eval("ListPart"+(Puntero-1));
trace ("Distancia entre la parte "+Puntero+" y "+(Puntero-1)+" es "+Distancia);
trace ("Son "+eval("ListPart"+Puntero)+" y "+eval("ListPart"+(Puntero-1)));
if (Distancia>Mayordistancia) {
trace ("Es la mayor por ahora en esta búsqueda");
Mayordistancia = Distancia;
NElegido = Puntero;
trace ("NElegido por ahora es "+Puntero);
}
Puntero = Puntero-1;
actions for fotograma 6
trace ("F6");
if (Puntero>1) {
trace ("Aún hay partes en la lista, seguir revisando.");
gotoAndPlay (5);
} else {
// N = Math.ceil((eval("ListPart"+NElegido)+eval("ListPart"+(NElegido-1))/2);
Parte1delaOperacion = eval("ListPart"+NElegido);
trace ("Parte1delaOperacion es "+Parte1delaOperacion);
Parte2delaOperacion = eval("ListPart"+(NElegido-1));
trace ("Parte2delaOperacion es "+Parte2delaOperacion);
N = Math.ceil((Parte1delaOperacion+Parte2delaOperacion)/2);
C = String(N).charat(N);
trace (N+" resulta "+C);
if (C == 0) {
trace ("para que C sea 0 usar N: "+N);
} else if (C == -9) {
trace ("para que C sea -9 usar N: "+N);
} else if (C == 4.5) {
trace ("para que C sea 4.5 usar N: "+N);
} else if (C == -7.2) {
trace ("para que C sea -7.2 usar N: "+N);
}
Lista = "";
}
actions for fotograma 7
trace ("F7");
actions for fotograma 8
trace ("F8");
trace ("Agregando N en el lugar que le corresponde en la lista...");
if (N<eval("ListPart"+Puntero)) {
Saver = eval("ListPart"+Puntero);
set ("ListPart"+Puntero, N);
trace ("N agregado en la parte "+Puntero);
trace ("Es "+N+" y sustituyó a "+Saver);
Lista = Lista+", "+N;
trace ("La lista por ahora es: "+Lista);
N = Saver;
} else {
Puntero = Puntero+1;
if (Puntero>ListParts) {
// Agregar N al final de la lista.
set ("ListPart"+Puntero, N);
trace ("N agregado en la última parte: "+Puntero);
ListParts = ListParts+1;
trace ("La lista completa es: "+Lista+", "+N);
// Producir nuevo N.
gotoAndPlay (4);
} else {
trace ("Ver si al nuevo N le corresponde estar en la siguiente parte.");
if (Puntero == 2) {
Lista = eval("ListPart1");
} else {
Lista = Lista+", "+eval("ListPart"+(Puntero-1));
}
trace ("La lista por ahora es: "+Lista);
gotoAndPlay (7);
}
}
actions for fotograma 9
trace ("F9");
actions for fotograma 10
trace ("F10");
trace ("Corriendo partes hacia el final...");
if (Puntero == ListParts) {
ListParts = ListParts+1;
// Sólo falta correr al último elemento.
set ("ListPart"+ListParts, N);
trace ("Última parte movida.");
trace ("La lista completa es: "+Lista+", "+N);
gotoAndPlay (4);
} else {
Puntero = Puntero+1;
// Correr hacia el final a las partes de la lista.
Saver = eval("ListPart"+Puntero);
set ("ListPart"+Puntero, N);
trace ("La parte "+Puntero+" que es "+Saver+" fue sustituída por "+N);
Lista = Lista+", "+N;
trace ("La lista por ahora es: "+Lista);
N = Saver;
trace ("Aún faltan partes que mover.");
gotoAndPlay (9);
}
Salida (cortada porque aún no le puse fin al programa):
Spoiler
F1
0 resulta 0
para que C sea 0 usar N: 0
F2
9 resulta
F3
F4
Produciendo un nuevo N...
Puntero se ubica al final de la lista, en 2
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 2 y 1 es 9
Son 9 y 0
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 2
F6
Parte1delaOperacion es 9
Parte2delaOperacion es 0
5 resulta
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0
F7
F8
Agregando N en el lugar que le corresponde en la lista...
N agregado en la parte 2
Es 5 y sustituyó a 9
La lista por ahora es: 0, 5
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 5, 9
F4
Produciendo un nuevo N...
Puntero se ubica al final de la lista, en 3
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 3 y 2 es 4
Son 9 y 5
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 3
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 2 y 1 es 5
Son 5 y 0
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 2
F6
Parte1delaOperacion es 5
Parte2delaOperacion es 0
3 resulta
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0
F7
F8
Agregando N en el lugar que le corresponde en la lista...
N agregado en la parte 2
Es 3 y sustituyó a 5
La lista por ahora es: 0, 3
F9
F10
Corriendo partes hacia el final...
La parte 3 que es 9 fue sustituída por 5
La lista por ahora es: 0, 3, 5
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 3, 5, 9
F4
Produciendo un nuevo N...
Puntero se ubica al final de la lista, en 4
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 4 y 3 es 4
Son 9 y 5
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 4
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 3 y 2 es 2
Son 5 y 3
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 2 y 1 es 3
Son 3 y 0
F6
Parte1delaOperacion es 9
Parte2delaOperacion es 5
7 resulta
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 3
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 3, 5
F7
F8
Agregando N en el lugar que le corresponde en la lista...
N agregado en la parte 4
Es 7 y sustituyó a 9
La lista por ahora es: 0, 3, 5, 7
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 3, 5, 7, 9
F4
Produciendo un nuevo N...
Puntero se ubica al final de la lista, en 5
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 5 y 4 es 2
Son 9 y 7
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 5
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 4 y 3 es 2
Son 7 y 5
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 3 y 2 es 2
Son 5 y 3
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 2 y 1 es 3
Son 3 y 0
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 2
F6
Parte1delaOperacion es 3
Parte2delaOperacion es 0
2 resulta
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0
F7
F8
Agregando N en el lugar que le corresponde en la lista...
N agregado en la parte 2
Es 2 y sustituyó a 3
La lista por ahora es: 0, 2
F9
F10
Corriendo partes hacia el final...
La parte 3 que es 5 fue sustituída por 3
La lista por ahora es: 0, 2, 3
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 4 que es 7 fue sustituída por 5
La lista por ahora es: 0, 2, 3, 5
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 5 que es 9 fue sustituída por 7
La lista por ahora es: 0, 2, 3, 5, 7
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 2, 3, 5, 7, 9
F4
Produciendo un nuevo N...
Puntero se ubica al final de la lista, en 6
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 6 y 5 es 2
Son 9 y 7
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 6
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 5 y 4 es 2
Son 7 y 5
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 4 y 3 es 2
Son 5 y 3
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 3 y 2 es 1
Son 3 y 2
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 2 y 1 es 2
Son 2 y 0
F6
Parte1delaOperacion es 9
Parte2delaOperacion es 7
8 resulta
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 2
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 2, 3
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 2, 3, 5
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 2, 3, 5, 7
F7
F8
Agregando N en el lugar que le corresponde en la lista...
N agregado en la parte 6
Es 8 y sustituyó a 9
La lista por ahora es: 0, 2, 3, 5, 7, 8
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 2, 3, 5, 7, 8, 9
F4
Produciendo un nuevo N...
Puntero se ubica al final de la lista, en 7
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 7 y 6 es 1
Son 9 y 8
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 7
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 6 y 5 es 1
Son 8 y 7
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 5 y 4 es 2
Son 7 y 5
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 5
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 4 y 3 es 2
Son 5 y 3
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 3 y 2 es 1
Son 3 y 2
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 2 y 1 es 2
Son 2 y 0
F6
Parte1delaOperacion es 7
Parte2delaOperacion es 5
6 resulta
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 2
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 2, 3
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 2, 3, 5
F7
F8
Agregando N en el lugar que le corresponde en la lista...
N agregado en la parte 5
Es 6 y sustituyó a 7
La lista por ahora es: 0, 2, 3, 5, 6
F9
F10
Corriendo partes hacia el final...
La parte 6 que es 8 fue sustituída por 7
La lista por ahora es: 0, 2, 3, 5, 6, 7
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 7 que es 9 fue sustituída por 8
La lista por ahora es: 0, 2, 3, 5, 6, 7, 8
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 2, 3, 5, 6, 7, 8, 9
F4
Produciendo un nuevo N...
Puntero se ubica al final de la lista, en 8
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 8 y 7 es 1
Son 9 y 8
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 8
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 7 y 6 es 1
Son 8 y 7
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 6 y 5 es 1
Son 7 y 6
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 5 y 4 es 1
Son 6 y 5
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 4 y 3 es 2
Son 5 y 3
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 4
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 3 y 2 es 1
Son 3 y 2
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 2 y 1 es 2
Son 2 y 0
F6
Parte1delaOperacion es 5
Parte2delaOperacion es 3
4 resulta
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 2
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0, 2, 3
F7
F8
Agregando N en el lugar que le corresponde en la lista...
N agregado en la parte 4
Es 4 y sustituyó a 5
La lista por ahora es: 0, 2, 3, 4
F9
F10
Corriendo partes hacia el final...
La parte 5 que es 6 fue sustituída por 5
La lista por ahora es: 0, 2, 3, 4, 5
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 6 que es 7 fue sustituída por 6
La lista por ahora es: 0, 2, 3, 4, 5, 6
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 7 que es 8 fue sustituída por 7
La lista por ahora es: 0, 2, 3, 4, 5, 6, 7
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 8 que es 9 fue sustituída por 8
La lista por ahora es: 0, 2, 3, 4, 5, 6, 7, 8
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 2, 3, 4, 5, 6, 7, 8, 9
F4
Produciendo un nuevo N...
Puntero se ubica al final de la lista, en 9
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 9 y 8 es 1
Son 9 y 8
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 9
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 8 y 7 es 1
Son 8 y 7
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 7 y 6 es 1
Son 7 y 6
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 6 y 5 es 1
Son 6 y 5
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 5 y 4 es 1
Son 5 y 4
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 4 y 3 es 1
Son 4 y 3
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 3 y 2 es 1
Son 3 y 2
F6
Aún hay partes en la lista, seguir revisando.
F5
Buscando la mayor distancia entre las partes de la lista...
Distancia entre la parte 2 y 1 es 2
Son 2 y 0
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 2
F6
Parte1delaOperacion es 2
Parte2delaOperacion es 0
1 resulta
F7
F8
Agregando N en el lugar que le corresponde en la lista...
Ver si al nuevo N le corresponde estar en la siguiente parte.
La lista por ahora es: 0
F7
F8
Agregando N en el lugar que le corresponde en la lista...
N agregado en la parte 2
Es 1 y sustituyó a 2
La lista por ahora es: 0, 1
F9
F10
Corriendo partes hacia el final...
La parte 3 que es 3 fue sustituída por 2
La lista por ahora es: 0, 1, 2
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 4 que es 4 fue sustituída por 3
La lista por ahora es: 0, 1, 2, 3
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 5 que es 5 fue sustituída por 4
La lista por ahora es: 0, 1, 2, 3, 4
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 6 que es 6 fue sustituída por 5
La lista por ahora es: 0, 1, 2, 3, 4, 5
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 7 que es 7 fue sustituída por 6
La lista por ahora es: 0, 1, 2, 3, 4, 5, 6
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 8 que es 8 fue sustituída por 7
La lista por ahora es: 0, 1, 2, 3, 4, 5, 6, 7
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 9 que es 9 fue sustituída por 8
La lista por ahora es: 0, 1, 2, 3, 4, 5, 6, 7, 8
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
En resumen:
012345678
9x1234
5678x
x12
34x678x
x12x4x6
78x
x1
2x4x6x8x
x1xx4x6x
8x
x1xx4x
6xxx
x1xx
4xxxxx
x
1xxxxxxxx
0, 9, 5, 3, 7, 2, 8, 6, 4, 1.
Sería una pérdida de tiempo buscar dónde estaba el error, para arreglarlo lo que hice fue poner muchos traces (print) e hice más cambios de los que recuerdo.
Dos que recuerdo fueron que yo hacía:
N = Math.ceil(eval("ListPart"+NElegido)-eval("ListPart"+(NElegido-1))/2);
y ahora:
Parte1delaOperacion = eval("ListPart"+NElegido);
Parte2delaOperacion = eval("ListPart"+(NElegido-1));
N = Math.ceil((Parte1delaOperacion+Parte2delaOperacion)/2);
Que creo que es lo mismo pero en vez de una resta es una suma. Calculaba la distancia cuando necesitaba el promedio xD
Lo separé en partes porque en la nueva versión me decía que había un error en la expresión, como que faltaba un paréntesis o algo así y no lo encontraba, así que simplifiqué.
Otro error es que en cierto punto el programa debía regresar a otro pero yo no lo había especificado, no recuerdo los detalles.
debería conocer mejor el lenguaje en el que programas
¡No existe uno más sencillo! Por eso lo uso

¿Qué parte no entiendes? Lo relevante en este tema es la producción de Ns, otras cosas como esto:
C = String(N).charat(N);
trace (N+", "+C);
if (C == 0) {
trace ("para que C sea 0 usar N: "+N);
} else if (C == -9) {
trace ("para que C sea -9 usar N: "+N);
} else if (C == 4.5) {
trace ("para que C sea 4.5 usar N: "+N);
} else if (C == -7.2) {
trace ("para que C sea -7.2 usar N: "+N);
} No, lo que pasa que en aquél momento no tenía tiempo como para quitar ese tipo de cosas. El programa es para buscar Ns que cumplan ciertas condiciones. Lo complejo es que quiero que la producción de Ns no sea 0, 1, 2... sino la que ya expliqué.
Otra cosa que puede parecer compleja es eval y cosas como esta:
set ("ListPart"+ListParts, N);
eval evalúa una expresión y la convierte en otra, sirve para poner expresiones variables. Por ejemlplo eval("ListPart"+Puntero) se transforma en ListPart1 si Puntero es 1, ListPart2 si es 2, etc.
set ("ListPart"+ListParts, N); crea una variable de nombre variable, es similar a eval. En este caso el nombre será ListPart1 si ListParts es 1, ListPart2 si es 2, etc. N es el valor que se le da a la variable creada.
Y bueno, uso "variables sueltas" en vez de arrays porque hace tiempo cuando quise que los arrays se guardaran en archivos externos no pude o no los pude cargar, así que me empecé a acostumbrar a hacerlo de este modo, además nunca me gustaron esos corchetes raros que se usa con los arrays, que yo sepa ninguna otra función los usa.
luego de un ciclo tienes 0-8 luego dos grupos 1-4 y 6-8 , casa alojando los diferentes grupos y los recorres por bucles.
No sé bien cómo hacer eso, lo pensaré.
Ahora lo que sigue es discernir cual es el mas distante de cada grupo, o bien sobre el grupo original, puesto que en tu segundo paso escoges al cero , pero el extremo entre 0-8, según el mismo criterio que elegiste el 9 entre 0-9 te volverá a dar el 8 y no el 0, así que interpreto que lo que tomás de referencia es la distancia a cada extremo osea has considerado en tu segundo calculo la distancia al 9 aunque ya lo separaste del grupo.
No entendí bien @.@
1ero establezco un rango de números, un mínimo y un máximo, sin eso esto no se puede hacer. En este caso el rango es 10, el mínimo es 0 y el máximo 9.
En 2ndo lugar se producen esos 2 números, 1ero el mínimo y luego el máximo, pero no es muy relevante el orden.
Luego empieza lo que debe repetirse (quizá con algunos pequeños cambios pero, en general): Se elige el número que esté más alejado de los que antes se eligieron. Es lo que intenté mostrar con letra negrita y x arriba: Es como que se elige el que está entre medio, el promedio, del par de números "contiguos" elegidos más lejanos entre si. Contiguos se refiere a que habiendo sido ordenados son los más cercanos. Cuando se tiene 0, 5 y 9, entonces 0 y 5 son "contiguos", y 5 y 9 también.
Ahora que criterio usas para evaluar distancia ?
La máxima longitud entre elementos del grupo, no es el criterio ya que ,entre 1-8 escojes 5 que está al medio y no en uno de los extremos como hiciste en 0-9, osea el maximo lo descartas...
y tambien no es la máxima distancia como el sumatorio del cuadrado de la diferencia entre dos elementos del grupo eso te debe generar 9-0-8-1-7-2-6-3-5-4.
No entiendo bien lo que dices en la 1era parte, pero la secuencia que pones al final es lo que llamo "Péndulo frenando" (porque va de extremo a extremo pero cada vez menos, hasta quedar en el centro), no es lo que quiero, eso es fácil, es algo como:
N1 = 0
N2 = 9
2:
N = N1
// Probar si cumple las condiciones buscadas.
N = N2
// Probar si cumple las condiciones buscadas.
3:
Si N1 < 4
N1++
N2--
Ir a 2.
sino
finAsí que porque escojes el 5? porque esta alejado de los que ya elegiste?
Sí:
0123
456789
4 y 5 son los más alejados de 0 y 9, la fórmula es \( (0+9)/2 \)
Yo elijo el 5 porque para simplificar por ahora en caso de empate elijo el mayor, pero es algo que voy a pulir del código, para que si en el empate anterior eligió el mayor ahora sea al menor, y viceversa.
en definitiva no sé por qué escoges el orden 0-9 cuando abiertamente dices que ante igualdad de distancia escoges el mayor y debería ser 9-0
Porque me refierí a en caso de empate entre 2 números contiguos (esta vez literal) entre un par de números antes elegidos, es decir cuando el promedio entre ellos da 2,5 por ejemplo. El 2 y 3 empatan en cuanto a la distancia hasta el 0 y 5, el promedio entre 0 y 5 es 2,5, pero ese número no es admisible, sólo el 2 y el 3.
Cuando hay empate porque varios números no contiguos tienen la misma distancia hasta pares "contiguos" antes elegidos, entonces la idea en principio es que se eligieran 1ero los menores, pero es irrelevante, en el código que hice ahora se eligieron 1ero los mayores. Lo ideal en este caso no sé qué sería porque depende de qué se haga en el otro tipo de empates, debo pensarlo.