elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Quiero que produzca números distantes pero sólo produce 0 y 9.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Quiero que produzca números distantes pero sólo produce 0 y 9.  (Leído 2,823 veces)
Tachikomaia


Conectado Conectado

Mensajes: 1.390


Hackentifiko!


Ver Perfil
Quiero que produzca números distantes pero sólo produce 0 y 9.
« en: 8 Octubre 2023, 01:49 am »

El resultado (N) quisiera que fuese: 0, 9, 5, 3, 7, 2, 1, 4, 6, 8, o algo similar, es decir, la idea es que produzca números del 0 al 9, enteros, sin repetir, en un orden tal que sean lo más distantes posibles a los anteriores:
Teniendo estos disponibles: x12345678x
se elige el 5 porque es el que está en el medio (el 4 también pero por ahora se elige el mayor en caso de iguales).
Teniendo: x1234x678x
se elige 3 porque entre 0 y 5 hay 4 números y entre 5 y 9 hay 3, el más distante está en el medio de donde haya más números entre los ya elegidos. De nuevo hay un empate, esta vez entre 2 y 3, y de nuevo se elige el mayor.
Y así sucesivamente.

Pero lo que estoy obteniendo es 0, 9, 9, 9... y siempre 9.

¿Qué debo modificar?

Código
  1. Escena 1
  2.   actions for fotograma 1
  3.      N = 0;
  4.      C = String(N).charat(N);
  5.      trace (N+", "+C);
  6.      if (C == 0) {
  7.         trace ("para que C sea 0 usar N: "+N);
  8.      } else if (C == -9) {
  9.         trace ("para que C sea -9 usar N: "+N);
  10.      } else if (C == 4.5) {
  11.         trace ("para que C sea 4.5 usar N: "+N);
  12.      } else if (C == -7.2) {
  13.         trace ("para que C sea -7.2 usar N: "+N);
  14.      }
  15.   actions for fotograma 2
  16.      N = 9;
  17.      C = String(N).charat(N);
  18.      trace (N+", "+C);
  19.      if (C == 0) {
  20.         trace ("para que C sea 0 usar N: "+N);
  21.      } else if (C == -9) {
  22.         trace ("para que C sea -9 usar N: "+N);
  23.      } else if (C == 4.5) {
  24.         trace ("para que C sea 4.5 usar N: "+N);
  25.      } else if (C == -7.2) {
  26.         trace ("para que C sea -7.2 usar N: "+N);
  27.      }
  28.   actions for fotograma 3
  29.      ListPart1 = 0;
  30.      ListPart2 = 9;
  31.      ListParts = 2;
  32.   actions for fotograma 4
  33.      Mayordistancia = 0;
  34.      Puntero = ListParts;
  35.   actions for fotograma 5
  36.      Distancia = eval("ListPart"+Puntero)-eval("ListPart"+(Puntero-1));
  37.      if (Distancia>Mayordistancia) {
  38.         Mayordistancia = Distancia;
  39.         NElegido = Puntero;
  40.      }
  41.      Puntero = Puntero-1;
  42.   actions for fotograma 6
  43.      if (Puntero>1) {
  44.         gotoAndPlay (5);
  45.      } else {
  46.         N = Math.ceil(eval("ListPart"+NElegido)-eval("ListPart"+(NElegido-1))/2);
  47.         C = String(N).charat(N);
  48.         trace (N+", "+C);
  49.         if (C == 0) {
  50.            trace ("para que C sea 0 usar N: "+N);
  51.         } else if (C == -9) {
  52.            trace ("para que C sea -9 usar N: "+N);
  53.         } else if (C == 4.5) {
  54.            trace ("para que C sea 4.5 usar N: "+N);
  55.         } else if (C == -7.2) {
  56.            trace ("para que C sea -7.2 usar N: "+N);
  57.         }
  58.      }
  59.   actions for fotograma 8
  60.      // Agregar N en el lugar que le corresponde en la lista.
  61.      if (N<eval("ListPart"+Puntero)) {
  62.         Saver = eval("ListPart"+Puntero);
  63.         set ("ListPart"+Puntero, N);
  64.         N = Saver;
  65.      } else {
  66.         Puntero = Puntero+1;
  67.         if (Puntero>ListParts) {
  68.            // Agregar N al final de la lista.
  69.            set ("ListPart"+Puntero, N);
  70.            ListParts = ListParts+1;
  71.            // Producir nuevo N.
  72.            gotoAndPlay (4);
  73.         } else {
  74.            // Ver si al nuevo N le corresponde estar en la siguiente parte.
  75.            gotoAndPlay (7);
  76.         }
  77.      }
  78.   actions for fotograma 9
  79.      Puntero = Puntero+1;
  80.      // Correr hacia atrás a los elementos de la lista.
  81.      Saver = eval("ListPart"+Puntero);
  82.      set ("ListPart"+Puntero, N);
  83.      N = Saver;
  84.   actions for fotograma 10
  85.      if (Puntero == ListParts) {
  86.         ListParts = ListParts+1;
  87.         // Sólo falta correr al último elemento.
  88.         set ("ListPart"+ListParts, N);
  89.         gotoAndPlay (4);
  90.      } else {
  91.         gotoAndPlay (9);
  92.      }


En línea

jca1

Desconectado Desconectado

Mensajes: 59


Ver Perfil
Re: Quiero que produzca números distantes pero sólo produce 0 y 9.
« Respuesta #1 en: 25 Octubre 2023, 20:57 pm »

No entiendo bien la consigna pero si lo que quieres es que el numero a ingresar sea lo mas distante al anterior, una solución en c+ seria:

Código:
int n=10,i;
int num[n];
for (i=0;i<n;i++){
    if (i%2==0){
        num[i]=i/2;
    }
    else{
        num[i]=n-(i+1)/2;
}

El vector resultante es la solución.

Saludos!


En línea

Tachikomaia


Conectado Conectado

Mensajes: 1.390


Hackentifiko!


Ver Perfil
Re: Quiero que produzca números distantes pero sólo produce 0 y 9.
« Respuesta #2 en: 25 Octubre 2023, 22:52 pm »

¿Qué salida da eso?

Este asunto ya lo resolví, no recuerdo cual era el error exacto pero te muestro una de las últimas veriones que tengo (a la posterior le quité la mayoría de los traces, ya sabiendo que funciona bien):
Código
  1. Escena 1
  2.   actions for fotograma 1
  3.      trace ("F1");
  4.      MaxN = 33;
  5.      MaxNplus1 = MaxN+1;
  6.      N = 0;
  7.      C = String(N).charat(N);
  8.      trace (N+" resulta "+C);
  9.      if (C == 0) {
  10.         if (Solfor0 == undefined) {
  11.            Solfor0 = N;
  12.         }
  13.      } else if (C == -9) {
  14.         if (Solfor9 == undefined) {
  15.            Solfor9 = N;
  16.         }
  17.      } else if (C == 4.5) {
  18.         if (Solfor4 == undefined) {
  19.            Solfor4 = N;
  20.         }
  21.      } else if (C == -7.2) {
  22.         if (Solfor7 == undefined) {
  23.            Solfor7 = N;
  24.         }
  25.      }
  26.   actions for fotograma 2
  27.      trace ("F2");
  28.      N = MaxN;
  29.      C = String(N).charat(N);
  30.      trace (N+" resulta "+C);
  31.      if (C == 0) {
  32.         if (Solfor0 == undefined) {
  33.            Solfor0 = N;
  34.         }
  35.      } else if (C == -9) {
  36.         if (Solfor9 == undefined) {
  37.            Solfor9 = N;
  38.         }
  39.      } else if (C == 4.5) {
  40.         if (Solfor4 == undefined) {
  41.            Solfor4 = N;
  42.         }
  43.      } else if (C == -7.2) {
  44.         if (Solfor7 == undefined) {
  45.            Solfor7 = N;
  46.         }
  47.      }
  48.   actions for fotograma 3
  49.      trace ("F3");
  50.      ListPart1 = 0;
  51.      ListPart2 = MaxN;
  52.      ListParts = 2;
  53.   actions for fotograma 4
  54.      trace ("F4");
  55.      Mayordistancia = 0;
  56.      Puntero = ListParts;
  57.      trace ("Produciendo un nuevo N...");
  58.      trace ("Puntero se ubica al final de la lista, en "+Puntero);
  59.   actions for fotograma 5
  60.      trace ("F5");
  61.      trace ("Buscando la mayor distancia entre las partes de la lista...");
  62.      Distancia = eval("ListPart"+Puntero)-eval("ListPart"+(Puntero-1));
  63.      trace ("Distancia entre la parte "+Puntero+" y "+(Puntero-1)+" es "+Distancia);
  64.      trace ("Son "+eval("ListPart"+Puntero)+" y "+eval("ListPart"+(Puntero-1)));
  65.      if (Distancia>Mayordistancia) {
  66.         trace ("Es la mayor por ahora en esta búsqueda");
  67.         Mayordistancia = Distancia;
  68.         NElegido = Puntero;
  69.         trace ("NElegido por ahora es "+Puntero);
  70.      }
  71.      Puntero = Puntero-1;
  72.   actions for fotograma 6
  73.      trace ("F6");
  74.      if (Puntero>1) {
  75.         trace ("Aún hay partes en la lista, seguir revisando.");
  76.         gotoAndPlay (5);
  77.      } else {
  78.         // N = Math.ceil((eval("ListPart"+NElegido)+eval("ListPart"+(NElegido-1))/2);
  79.         Parte1delaOperacion = eval("ListPart"+NElegido);
  80.         trace ("Parte1delaOperacion es "+Parte1delaOperacion);
  81.         Parte2delaOperacion = eval("ListPart"+(NElegido-1));
  82.         trace ("Parte2delaOperacion es "+Parte2delaOperacion);
  83.         N = Math.ceil((Parte1delaOperacion+Parte2delaOperacion)/2);
  84.         C = String(N).charat(N);
  85.         trace (N+" resulta "+C);
  86.         if (C == 0) {
  87.            if (Solfor0 == undefined) {
  88.               Solfor0 = N;
  89.            }
  90.         } else if (C == -9) {
  91.            if (Solfor9 == undefined) {
  92.               Solfor9 = N;
  93.            }
  94.         } else if (C == 4.5) {
  95.            if (Solfor4 == undefined) {
  96.               Solfor4 = N;
  97.            }
  98.         } else if (C == -7.2) {
  99.            if (Solfor7 == undefined) {
  100.               Solfor7 = N;
  101.            }
  102.         }
  103.         Lista = "";
  104.      }
  105.   actions for fotograma 7
  106.      trace ("F7");
  107.   actions for fotograma 8
  108.      trace ("F8");
  109.      trace ("Agregando N en el lugar que le corresponde en la lista...");
  110.      if (N<eval("ListPart"+Puntero)) {
  111.         Saver = eval("ListPart"+Puntero);
  112.         set ("ListPart"+Puntero, N);
  113.         trace ("N agregado en la parte "+Puntero);
  114.         trace ("Es "+N+" y sustituyó a "+Saver);
  115.         Lista = Lista+", "+N;
  116.         trace ("La lista por ahora es: "+Lista);
  117.         N = Saver;
  118.      } else {
  119.         Puntero = Puntero+1;
  120.         if (Puntero>ListParts) {
  121.            // Agregar N al final de la lista.
  122.            set ("ListPart"+Puntero, N);
  123.            trace ("N agregado en la última parte: "+Puntero);
  124.            ListParts = ListParts+1;
  125.            trace ("La lista completa es: "+Lista+", "+N);
  126.            // Producir nuevo N.
  127.            gotoAndPlay (4);
  128.         } else {
  129.            trace ("Ver si al nuevo N le corresponde estar en la siguiente parte.");
  130.            if (Puntero == 2) {
  131.               Lista = eval("ListPart1");
  132.            } else {
  133.               Lista = Lista+", "+eval("ListPart"+(Puntero-1));
  134.            }
  135.            trace ("La lista por ahora es: "+Lista);
  136.            gotoAndPlay (7);
  137.         }
  138.      }
  139.   actions for fotograma 9
  140.      trace ("F9");
  141.   actions for fotograma 10
  142.      trace ("F10");
  143.      trace ("Corriendo partes hacia el final...");
  144.      if (Puntero == ListParts) {
  145.         ListParts = ListParts+1;
  146.         // Sólo falta correr al último elemento.
  147.         set ("ListPart"+ListParts, N);
  148.         trace ("Última parte movida.");
  149.         trace ("La lista completa es: "+Lista+", "+N);
  150.         // ¿Se analizaron todos los números del rango?
  151.         if (MaxNplus1 == ListParts) {
  152.            // Sí, mostrar los Ns que cumplen la condición y finalizar.
  153.            if (Solfor0 != undefined) {
  154.               trace ("Para que C sea 0 usar N: "+Solfor0);
  155.            }
  156.            if (Solfor9 != undefined) {
  157.               trace ("Para que C sea -9 usar N: "+Solfor9);
  158.            }
  159.            if (Solfor4 != undefined) {
  160.               trace ("Para que C sea 4.5 usar N: "+Solfor4);
  161.            }
  162.            if (Solfor7 != undefined) {
  163.               trace ("Para que C sea -7.2 usar N: "+Solfor7);
  164.            }
  165.            stop ();
  166.         } else {
  167.            // Analizar otro N.
  168.            gotoAndPlay (4);
  169.         }
  170.      } else {
  171.         Puntero = Puntero+1;
  172.         // Correr hacia el final a las partes de la lista.
  173.         Saver = eval("ListPart"+Puntero);
  174.         set ("ListPart"+Puntero, N);
  175.         trace ("La parte "+Puntero+" que es "+Saver+" fue sustituída por "+N);
  176.         Lista = Lista+", "+N;
  177.         trace ("La lista por ahora es: "+Lista);
  178.         N = Saver;
  179.         trace ("Aún faltan partes que mover.");
  180.         gotoAndPlay (9);
  181.      }

Salida cortada (la corté porque es muy larga):
Citar
F1
0 resulta 0
F2
33 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 33
Son 33 y 0
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 2
F6
Parte1delaOperacion es 33
Parte2delaOperacion es 0
17 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 17 y sustituyó a 33
La lista por ahora es: 0, 17
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 17, 33
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 16
Son 33 y 17
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 17
Son 17 y 0
Es la mayor por ahora en esta búsqueda
NElegido por ahora es 2
F6
Parte1delaOperacion es 17
Parte2delaOperacion es 0
9 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 9 y sustituyó a 17
La lista por ahora es: 0, 9
F9
F10
Corriendo partes hacia el final...
La parte 3 que es 33 fue sustituída por 17
La lista por ahora es: 0, 9, 17
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 9, 17, 33
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 16
Son 33 y 17
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 8
Son 17 y 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 2 y 1 es 9
Son 9 y 0
F6
Parte1delaOperacion es 33
Parte2delaOperacion es 17
25 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, 9
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, 9, 17
F7
F8
Agregando N en el lugar que le corresponde en la lista...
N agregado en la parte 4
Es 25 y sustituyó a 33
La lista por ahora es: 0, 9, 17, 25
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 9, 17, 25, 33
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 8
Son 33 y 25
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 8
Son 25 y 17
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 8
Son 17 y 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 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...
La parte 3 que es 17 fue sustituída por 9
La lista por ahora es: 0, 5, 9
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 4 que es 25 fue sustituída por 17
La lista por ahora es: 0, 5, 9, 17
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
La parte 5 que es 33 fue sustituída por 25
La lista por ahora es: 0, 5, 9, 17, 25
Aún faltan partes que mover.
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 5, 9, 17, 25, 33
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 8
Son 33 y 25
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 8
Son 25 y 17
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 8
Son 17 y 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 3 y 2 es 4
Son 9 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 2 y 1 es 5
Son 5 y 0
F6
Parte1delaOperacion es 33
Parte2delaOperacion es 25
29 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, 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, 5, 9
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, 5, 9, 17
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, 5, 9, 17, 25
F7
F8
Agregando N en el lugar que le corresponde en la lista...
N agregado en la parte 6
Es 29 y sustituyó a 33
La lista por ahora es: 0, 5, 9, 17, 25, 29
F9
F10
Corriendo partes hacia el final...
Última parte movida.
La lista completa es: 0, 5, 9, 17, 25, 29, 33
F4
Produciendo un nuevo N...
(...)
La lista completa es: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33
Para que C sea 0 usar N: 0

En la versión más nueva que esa hay un poquito de random y una posible salida es:
Citar
0 resulta 0
33 resulta
17 resulta
8 resulta
25 resulta
12 resulta
29 resulta
21 resulta
4 resulta
14 resulta
31 resulta
27 resulta
23 resulta
19 resulta
10 resulta
6 resulta
2 resulta
15 resulta
32 resulta
30 resulta
28 resulta
26 resulta
24 resulta
22 resulta
20 resulta
18 resulta
16 resulta
13 resulta
11 resulta
9 resulta
7 resulta
5 resulta
3 resulta
1 resulta
Ignora lo de "resulta", eso es que al aplicar el número en cierto proceso da resultado nulo.

Aún sigo mejorando este programa, pero como ves, sobretodo al inicio, elige números distantes entre sí, como yo quería.
En línea

jca1

Desconectado Desconectado

Mensajes: 59


Ver Perfil
Re: Quiero que produzca números distantes pero sólo produce 0 y 9.
« Respuesta #3 en: 26 Octubre 2023, 00:24 am »

Primero no es tan difícil calcular la salida de mi programa viendo todo lo que hiciste vos.

Segundo el programa que hice es eficaz y eficiente.

Tercero no hay necesidad de poner todo el código de nuevo y todo el desorden de resultados.

Cuarto el resultado que da en ese caso es 0,9,1,8,2,7,3,6,4,5.

Sino no es lo que queres explicate bien en la pregunta.
En línea

Tachikomaia


Conectado Conectado

Mensajes: 1.390


Hackentifiko!


Ver Perfil
Re: Quiero que produzca números distantes pero sólo produce 0 y 9.
« Respuesta #4 en: 27 Octubre 2023, 03:48 am »

1: Hay muchas cosas que me cuesta entenderlas.
Citar
int n=10,i;
¿Estás diciendo que i es una variable de tipo entero pero sin valor definido? Supongo, no sé, nunca defino el tipo de las variables ni más de una en una misma línea y siempre que la defino les doy valor (Actionscript lo exige, aunque sea ""), no estoy acostumbrado a eso que haces.

Citar
int num[n];
No sé qué es eso ¿un array? Nunca uso arrays, no sé entonces. ¿O es otro modo de definir una variable? Dice int, pero en vez de un = has puesto esos paréntesis cuadrados que casi nunca usé y por lo que sé sólo se usan en arrays, por eso pensé que era uno.
Ah ¿es una variable cuyo nombre está compuesto por una variable? Ok, es que nunca lo había visto en un lenguaje distinto al que uso.

Citar
for (i=0;i<n;i++){
Casi nunca en mi vida usé un for, ergo en ese caso no sé si lo 1ero que hace la repetición es i++ o eso lo hace antes del fin.

Citar
num=i/2;
i en la 1er repetición es 0 o 1, y lo divides entre 2 así que te da 0 o 0,5, pero sólo aplicas esto si al dividirla entre 2 te da resto 0, así que imposible que se obtenga un decimal.

Citar
num=n-(i+1)/2;
Esto lo aplicas con números impares. La 1er vez es
10-(1+1)/2
10-2/2
10-1
9

A ver, cuando i es 0, el n producido es 0/2, o sea 0.

Cuando i es 1, n es 9.

Si i es 2, n es 1.

Si i es 3, n es
10-(3+1)/2
10-4/2
10-2
8

Parece que haces lo que llamo péndulo frenándose (porque va de un extremo a otro, cada vez menos, hasta quedar en el centro), no es lo que buscaba, desde el inicio dije que era algo como 0, 9, 5, 3, 7, 2, 1, 4, 6, 8
Primero los extremos, pero luego los que estén entre medio de pares cercanos ya elegidos. Tú haces 0, 9, 1... pero entre el 0 y el 1 la distancia es sólo 1, la idea es elegir un número cuya mínima distancia a los otros sea la mayor posible, ese sería el 4 o el 5. El 4 tiene 4 de distancia al 0 y 5 al 9. El 5 tiene 5 al 0 y 4 al 9.

Lo que haces:

Los colores marcan la distancia al anterior elegido más cercano, la idea es evitar que aparezca rojo, ahí aparece siempre, porque el número está al lado de uno antes elegido.

Lo que quiero:


Pero ya lo que me falta creo que es fácil, así que ya no es necesario que hagas un code.

Citar
Tercero no hay necesidad de poner todo el código de nuevo y todo el desorden de resultados.
¿Lo dices por lo que yo hice?
El código que puse al responderte es distinto del 1ero que puse.
Y no sé qué desorden ves...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines