Foro SofosAgora

Foro abierto a los intereses de sus usuarios. Debate, aprende y diviértete.
Fecha actual 27 May 2019, 01:16

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 8 mensajes ] 
Autor Mensaje
NotaPublicado: 05 Nov 2018, 04:00 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 9373
Llamemos a esto:
1
2
3, 4
3
3, 5
6, 7, 8
4
3, 6
6, 7, 9
10, 11, 12, 13
etc
...la serie base.

Como ven, sus elementos pueden ser un número o subseries de números. Ahí están siempre en orden pero no necesariamente es así.

Se describe o produce (en resumen) así:
Código:
El 1er número es 1.
El largo actual (ActualL) es 1.
El largo máximo (MaxL) es 1.
Repetir:
   Si ActualL < MaxL
      ActualL aumenta 1.
      Sumar 1 al último número de la subserie con ese largo, y si llega al máximo (sigo hablando del número, no del largo) resetearlo y aumentar el delantero y así sucesivamente. Es igual a aumentar un número cualquiera, acá el tema es que los elementos no van del 0 al 9 sino del 1 hasta aún no sé cuánto, pero más de 100. Además, si por ejemplo el largo es 2 y los números son máximo, máximo, queda 1, 1, no se agregan números (sino cambiaría el largo).
   Sino
      Crear una serie compuesta de ActualL números, que comience desde el último número usado+1.
      ActualL vuelve a ser 1
      MaxL aumenta 1.
No sé si estoy olvidando algo importante, una descripción más detallada sería esta:
Spoiler: show
Código:
Escena 1
   actions for fotograma 1
      Item1 = "WispG";
      Item2 = "ShadeG";
      Item3 = "DryadG";
      Item4 = "AuraG";
      Item5 = "SalaG";
      L1P1 = 0;
      MinL = 1;
      ActualL = 1;
      MaxL = 1;
      FirstL1 = "TakoB ";
      function Concatenarytrace () {
         Print = "";
         Cursor = 0;
         do {
            Cursor = Cursor+1;
            Print = Print+eval("Item"+eval("L"+ActualL+"P"+Cursor))+" ";
         } while (Cursor<ActualL);
         trace (Print);
         if (Print == eval("FirstL"+ActualL)) {
            // Si lo mostrado es igual al grabado como último...
            // ...no se hacen más exp con ese L.
            MinL = MinL+1;
         }
         if (ActualL<MaxL) {
            // Si el largo es aumentable, aumenta.
            ActualL = ActualL+1;
         } else {
            // Sino, queda al mínimo pero el máximo aumenta.
            // Se genera el límite para el nuevo MaxL.
            if (MaxL<7) {
               MaxL = MaxL+1;
               set ("FirstL"+MaxL, "");
               Cursor = 1;
               LXPY = MaxL+eval("L"+ActualL+"P1")+Cursor-1;
               if (5<LXPY) {
                  LXPY = 1;
               }
               do {
                  set ("L"+MaxL+"P"+Cursor, LXPY);
                  set ("FirstL"+MaxL, eval("FirstL"+MaxL)+eval("Item"+LXPY)+" ");
                  Cursor = Cursor+1;
                  LXPY = LXPY+1;
                  if (5<LXPY) {
                     LXPY = 1;
                  }
               } while (Cursor<MaxL);
               if (LXPY == 1) {
                  LXPY = 6;
               }
               LXPY = LXPY-1;
               set ("L"+MaxL+"P"+Cursor, LXPY);
               set ("FirstL"+MaxL, eval("FirstL"+MaxL)+eval("Item"+LXPY)+" ");
            }
            ActualL = MinL;
         }
         gotoAndPlay (2);
      }
   actions for fotograma 2
      Cursor = ActualL;
   actions for fotograma 3
      if (eval("L"+ActualL+"P"+Cursor)<5) {
         // Si el char es aumentable, aumenta.
         set ("L"+ActualL+"P"+Cursor, eval("L"+ActualL+"P"+Cursor)+1);
         Concatenarytrace();
      }
   actions for fotograma 4
      // El char no es aumentable, ergo se resetea.
      set ("L"+ActualL+"P"+Cursor, 1);
      if (1<Cursor) {
         // Si Cursor puede bajar, baja.
         Cursor = Cursor-1;
      } else {
         // Sino, se muestra el reseteado.
         Concatenarytrace();
      }
   actions for fotograma 5
      if (eval("L"+ActualL+"P"+Cursor)<5) {
         // Si el char es aumentable, aumenta.
         set ("L"+ActualL+"P"+Cursor, eval("L"+ActualL+"P"+Cursor)+1);
         Concatenarytrace();
      } else {
         // Sino, se resetea y reinicia un proceso.
         gotoAndPlay (4);
      }
Aunque los números se cambian por ítems, está limitado a 5, largo 7, y tiene un error o más de uno que no viene/n al caso. Creo que nada más...
Quiero transformar la serie en esto:
1
3, 4
2
6, 7, 8 si se cumplen ciertas condiciones, sino saltear.
3, 5
(6, 7, 8) o (10, 11, 12, 13) o saltear, dependiendo de ciertas condiciones.
(6, 7, 8) o 6, 7, 9, dependiendo de si 6, 7, 8 se usó o no.

El cambio es que en los momentos pares puede haber una serie paralela, compuesta de subseries de largo+1 al anterior. En cuanto a qué números contiene, eso es parte de lo complejo, porque usa los que habría en la serie base.
La serie base sólo cambia en que al producir un largo por 1era vez, le suma 1 al último número, no repite una subserie ya producida.

Lo que quiero, como dice el título, es obtener las subseries de la serie paralela, a partir de la serie base que ya tenga.

Si por ejemplo tengo
1
3, 4
2
...debo poder obtener 6, 7, 8 sin hacer previamente la serie.

Si tengo
1
3, 4
2
6, 7, 8
3, 5
...debo poder obtener 10, 11, 12, 13.

Si tengo
1
3, 4
2
3, 5
...debo poder obtener 6, 7, 8

Por lo que veo es algo como:
Último número de la subserie anterior más larga + 2 - veces que se salteó el crear un nuevo largo.

Si por ejemplo tengo
1
3, 4
2
...debo hacer 4+2 para obtener 6, el resto es sólo sumar 1.

Si tengo
1
3, 4
2
6, 7, 8
3, 5
...debo hacer 8+2 para obtener 10...

1
3, 4
2
salteado
3, 5
...debo hacer 5+2-1 para obtener 6...

Bueno... probaré a ver si funciona o no. ¿Qué creen? ¿saben (o se les ocurre) un método más simple?

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Última edición por Tachikomaia el 05 Nov 2018, 04:11, editado 1 vez en total

Arriba
 Perfil  
Responder citando  
NotaPublicado: 05 Nov 2018, 04:09 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 9373
Eh, acabo de ver que el número inicial de las subseries con nuevo máximo largo forman una serie que ya he tratado y me han comentado que tiene un nombre y formula.
1, 3, 6, 10.
El número siguiente es el anterior + la posición actual.
3 = 1+2
6 = 3+3
10 = 6+4
So... en mi caso sería ActualL+1er número de la anterior subserie más larga. Como se puede resetear tengo que guardarlo cuando recién se crea, y hacer otros arreglos, pero bue, creo que es más fácil que lo que había pensado.

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Arriba
 Perfil  
Responder citando  
NotaPublicado: 10 Nov 2018, 02:14 
Desconectado
Avatar de Usuario

Registrado: 13 Oct 2010, 18:30
Mensajes: 11689
Ubicación: Bogotá
No entendí nada.

_________________
Qu'est-ce que vous regardez.


Arriba
 Perfil  
Responder citando  
NotaPublicado: 10 Nov 2018, 19:19 
Desconectado

Registrado: 04 Nov 2011, 15:00
Mensajes: 9045
Juan Zuluaga escribió:
No entendí nada.


Es lo que nos pasa contigo...


Arriba
 Perfil  
Responder citando  
NotaPublicado: 10 Nov 2018, 20:02 
Desconectado

Registrado: 05 Mar 2013, 14:43
Mensajes: 11018
Yo a Jvahn lo entiendo, a Tachi no porque ni él se entiende.


Arriba
 Perfil  
Responder citando  
NotaPublicado: 10 Nov 2018, 20:29 
Desconectado
Avatar de Usuario

Registrado: 10 Jun 2011, 21:52
Mensajes: 4609
Yo sé que con esfuerzo puedo entender a cualquiera (al menos en este foro), porque en alguna ocasión lo he hecho. Pero, ¿para qué malgastar esfuerzos?

Imagen

_________________
Spoiler: show


Arriba
 Perfil  
Responder citando  
NotaPublicado: 11 Nov 2018, 00:11 
Desconectado
Avatar de Usuario

Registrado: 13 Oct 2010, 18:30
Mensajes: 11689
Ubicación: Bogotá
ManuelB escribió:
Juan Zuluaga escribió:
No entendí nada.


Es lo que nos pasa contigo...



Es que soy selectivo.

_________________
Qu'est-ce que vous regardez.


Arriba
 Perfil  
Responder citando  
NotaPublicado: 16 Nov 2018, 08:49 
Desconectado
Avatar de Usuario

Registrado: 10 Ago 2011, 20:39
Mensajes: 9373
Al final hallé una solución más simple a lo que necesitaba. Pero es complicado explicar todo ¿curioso no? Simple pero complejo de explicar.

A ver... yo quería algo así:
1
3, 4
2
6, 7, 8 si se cumplen ciertas condiciones, sino saltear.
3, 5
(6, 7, 8) o (10, 11, 12, 13) o saltear, dependiendo de ciertas condiciones.
(6, 7, 8) o 6, 7, 9, dependiendo de si 6, 7, 8 se usó o no.

Pero al final (luego incluso de decir "solucionado"), programando la cosa, me di cuenta que era más fácil que las series de nuevo largo comenzaran con el número más recientemente usado+1, de modo que no había que calcular cómo sería la 1era parte de la serie base. Y tiene más sentido así.
1
2, 3
2
4, 5, 6 si se cumplen ciertas condiciones, sino saltear.
2, 4
(5, 6, 7) si antes se salteó, sino (7, 8, 9, 10).

Antes decía "A, B o saltear", para simplificar, pero bueno, es más complejo que eso, y no es "en las partes pares".


En resumen estoy buscando una forma óptima y divertida de hacer experimentos, en lo que sea. Pongamos que fuese química. Sería aburrido hacer:
Agua+Alcohol
Agua+Arena
Agua+Algodón
Agua+Azúcar
¡Siempre Agua! ¡Siempre 2 cosas!

Del modo que he desarrollado se pueden hacer combinaciones mucho más variadas...

También se trata de hacer los experimentos de un modo más inteligente, lo probablemente más efectivo probarlo 1ero, pero eso me resulta complicado de programar. En parte porque varío el largo y el número con el que empiezan, pero el aumento es siempre 1 y hay marcado un límite. Ej: Empiezo desde 10, 10, llego hasta 100, 100, vuelvo a 1, 1, termina en 10, 9. Si en cambio probara lo más probable tendría que hacer una lista paralela de lo que he probado y cada vez que se pruebe siguiendo una lista clásica ver si ya se probó o no. Sino, generar una lista con un orden anormal, pero es difícil, y además yo cuando genero una lista no guardo mucho, sólo qué numeros son, pero para hacer algo con lo probable habría que tener una lista guardada.

Lo más simple es tener un número o conjunto de números e irlos aumentando:
10, 10
10, 11
etc
Nada se graba, sólo están los números que se van modificando.

En cambio, si se quiere un orden "inteligente", hay que tenerlo guardado porque no hay forma de deducirlo (o no conozco) así de la nada, y además el criterio puede ir cambiando o sea que la lista debería poderse reordenar... Me perdí. Son cosas difíciles de explicar a tal punto que a veces siento que no sé de lo que hablo. Pero haré un tema de eso. Algo como una IA que adivine una película, videojuego, etc, diciendo letras. En mi país es un juego llamado Ahorcado, no sé en los vuestros.

En fin, nos vemos en otro tema, este ya fue o al menos ya no estoy concentrado en él.

_________________
Si no puedes hacerlo, intenta primero hacer algo más simple aunque similar.


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 8 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
POWERED_BY
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO