Ver Mensaje Individual
  #10 (permalink)  
Antiguo 11/10/2015, 22:14
Avatar de Tachikomaia
Tachikomaia
 
Fecha de Ingreso: agosto-2011
Mensajes: 403
Antigüedad: 8 años, 3 meses
Puntos: 5
Respuesta: Reto/favor: Plantead problemas sencillos que no pueda resolver.

Nota: No había entendido el problema. Te averigué si un número de la 1er serie era divisible por algún número primo, pero vos me pediste averiguar si algún número de la 1era lista está en la 2nda.
"1. - Averiguar si algún número de la serie de Fibonacci es un número primo."
Más adelante me corrijo.

Listo, a medias.
Código Frame 1:
Ver original
  1. // SitElms:
  2. // Otros elementos:
  3. E1 = 0;
  4. Act = 1;
  5. Tx = "";
Código Frame 2:
Ver original
  1. // Mod Sit.
  2. E2 = Act+E1;
  3. E1 = Act;
  4. Act = E2;
Código Frame 3:
Ver original
  1. // Sols check
  2. if (Act/2 == Math.floor(Act/2)) {
  3.     // Good Val.
  4.     Tx = Tx + Act +" cumple los requisitos.\n";
  5.     stop ();
  6. } else {
  7.     // Not good Val.
  8.     Tx = Tx + Act +" no cumple los requisitos.\n";
  9.     gotoAndPlay (2);
  10. }
¿Por qué "a medias"?
Porque sólo chequea si es divisible entre 2. Para que chequee más casos tendría que poner más ifs o un loop con variación de los chequeos (eso recién se me ocurrió, antes simplemente pensaba que si entraba a poner ifs yo no iba a terminar, y el programa tampoco). Luego te doy una solución más completa. Pero realmente más allá de esta solución me parece un problema muy interesante, porque es como que no hay una forma ideal de buscar la solución. O sea, puedo elegir un número de la 1er lista y compararlo con cada uno de la 2nda (los primos), cosa que podría nunca acabar salvo que le ponga un límite, pero si le pongo un límite podría no hallar una solución que estuviera más allá de ese límite. Y sino, puedo hacer lo que hice, variar el número de la 1er lista y mantener el de la 2nda, es decir probar siempre si el 1ero (variable) es divisible entre el 2ndo (contante). Me agrada la idea de pensar una forma en que pudiera variar ambos números...
Si tuviese definidas las cosas más claro, como hacen uds, así:
Lista1 = 1, 2, 3, 5, 8, 13...
Lista2 = 2, 3, 5, 7, 11, 13...
...podría ver el asunto más claramente. De hecho se me ocurre una forma:
Tomar un número de una lista2, ver si está en la otra, y sino tomar otro, PERO, eso sería una "solución" rápida, que podría no resultar. Porque la lista 1... espera ¿he entendido mal el problema? Sí, vaya ^^u
Yo te averigué si un número de la 1er serie era divisible por algún número primo, pero vos me pediste averiguar si algún número de la 1era lista está en la 2nda.

1. - Averiguar si algún número de la serie de Fibonacci es un número primo.

Bueno, te cambio la parte del código que hace falta:
Código Frame 3:
Ver original
  1. // Sols check
  2. if (Act == 2) {
  3.     // Good Val.
  4.     Tx = Tx + Act +" cumple los requisitos.\n";
  5.     stop ();
  6. } else {
  7.     // Not good Val.
  8.     Tx = Tx + Act +" no cumple los requisitos.\n";
  9.     gotoAndPlay (2);
  10. }

Qué tonto, sí o sí iba a haber algún número divisible entre un primo XD

En fin. Entonces serviría esa solución que estaba diciendo, y le agrego algunas cosas:
Tomar el nro1 de la lista 1.
Tomar el nro2 de la lista 2.
Si son iguales mostrarlo en pantalla y fin.
Sino ver qué número es menor, y en la lista donde esté tomar el siguiente.
Volver al paso "Si".

Ahora bien, yo quiero solucionarlo usando un método que sirva "siempre", por eso usé el mío. Sería necesario ajustar algunas cosas, tendré que pensar -encima había entendido mal el problema xP -

Sobre mi código:
El problema que planteas no tiene situación, o serían esas listas que, en un caso deduzco mediante variables y en otro caso no he puesto. Aún no soluciono problemas con listas "indeductibles", lo explicaré más adelante.
El punto es que dice SitElms (elementos de la situación) pero luego no hay código; acabo de decir el motivo.
E1 es una variable externa al problema, la nro1.
Act es la acción, en este caso el número que se va a chequear.
Tx es un texto que se muestra en pantalla indicando cómo va la búsqueda.
Frame 2:
Se varía el número a chequear y se conserva el número anterior, para poder hacer la variación que requiere la 1er lista.
Frame 3:
Se chequea que el número analizado cumpla las condiciones establecidas, en este caso ser 2. Como dije, debería chequear más cosas, pero tendré que pensarlo.

---------------------------------------------------
En cuanto a mi método, he reducido a 8 las versiones, aunque creo que irán aumentando según qué tipo de cosas tengan las listas. También terminé la versión que puede manejar números y textos, aunque no la probé.

Lista de versiones:
One:
Para problemas que pueden solucionarse mediante 1 acción y no requieran listas. Puede manejar números y textos, y me atrevo a decir que también permite que las variables cambien su tipo y crear variables.

One List:
No realizada, permitiría trabajar con listas indeductibles o difíciles de deducir.

Long Nums:
Si el problema requiere más de una acción para solucionarse y usa números pero no listas.

Long Txs:
Si el problema requiere más de una acción para solucionarse y usa textos pero no listas.

Long Nums y Txs:
No probada. Si el problema requiere más de una acción para solucionarse y usa números y textos pero no listas.

Long List Nums:
No realizada. Si el problema requiere más de una acción para solucionarse y usa números y listas.

Long List Txs:
No realizada. ...más de una acción para solucionarse... textos y listas.

Long List Nums y Txs:
No realizada. ...más de una acción para solucionarse... números y textos y listas.

El problema que me planteaste sería de tipo One List:, por lo que tardaré en resolverlo.
__________________
"No se puede borrar hasta", PHPeros.