Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/10/2015, 21:40
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.

En este diagrama que hice días atrás olvidé mencionar la precisión de los decimales.

Ya está un poco "obsoleto" ese diagrama pero Kritik me ayudó a concientizar otro aspecto en el que avanzar: El autocompletado. Es decir, me planteas un problema en castellano y con cosas que además no sé bien qué son, como los números primos. Olvidé mencionarlo pero mi programa requiere que las variables determinantes estén definidas, no puede averiguar cuales son, a menos que el problema se plantee en dos partes: 1- averiguarlas, 2-resolver el problema en sí. Pero tampoco puede averiguarlas sin alguna "pista".
Nota: Llamo "variables determinantes" a las que determinan cual será la solución. Por ejemplo dónde está el personaje parado o cómo es el laberinto.
Sobre el diagrama hay más info aquí:
http://sofosagora.net/filosofia-gene...nes-t5773.html
...no es el tema pero si creen que hay "otras flechas" (mejoras) agradezco que me las digan.

En fin ¿cual es el problema con tu planteamiento? Que debo convertirlo en código, y que sería más fácil si lo el problema estuviese planteado un poco más de esa forma. No lo exijo, pero recuerda que es para ver la capacidad de mi programa, no para ver mi capacidad de traducir.

-----------------------------------------------------------------------------------------------------------------------

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

https://es.wikipedia.org/wiki/Sucesi...n_de_Fibonacci
Creo que lo entendí.

https://es.wikipedia.org/wiki/N%C3%BAmero_primo
Eso no ¿son los números enteros > 1 que al ser divididos por números enteros > 1 distintos de si mismos dan un resto > 0?
Confirmame eso. Parece ser el caso, el 4 no estaría porque es divisible entre 2 que sí está, el 6 por el 2 y 3, el 8 por el 4... Voy a suponer que es eso, sino me avisas.

Si considero esto como casilleros, en primer lugar debo caer en un casillero que esté dentro de la serie, y en segundo, que sea primo.

Es un problema que
- puede resolverse en 1 acción (básicamente porque la acción es sustituyente (leer sobre el diagrama), es decir se puede pasar de un valor a cualquier otro, no hay un rango máximo de movimiento)
- no requiere resetear la situación (esto no lo había pensado, debería hacer una versión en que no se reseteé, sino la búsqueda será peor).
...me gustaría definir el problema como suelo definirlo:
Cita:
// SitElms:
V1 = 1;
M.SitElms = 1;
// Otros elementos:
M.Actini = 2;
M.CompNum = -10;
M.CompNum2 = M.CompNum*10;
// Mod Sit (Act con M.Act) ?
V1 = Act;
// Sols check
if (V1 == 5) {

// Actmod pos?
// ActMod.
M.Act = M.Act+1;
Pero es complicado...

En primer lugar no hay límite en el valor de la acción o de las variables. Si viste mi respuesta a Malenko quizá entiendas cual es el problema con eso, sino intentaré explicarlo...
Para verificar que las variables se cargaron bien (aunque en este caso no es necesario cargarlas! wow, tampoco lo había pensado, más motivos para hacer otra versión), M.CompNum debe ser menor y más largo (si fuese cadena) que los valores a cargar. Como los valores en este caso, en teoría -ya que no hay límite- pueden ser infinitos, M.CompNum debe ser variable pero no sé exactamente cómo variarlo. Tengo una idea, la más obvia: Cuando una variable cambia, chequear si M.CompNum es menor y más largo, sino asignarle el valor de la variable *10. M.CompNum2 también participa en el proceso y debe ajustarse, pero ese es simplemente M.CompNum*10. Pero en fin, debo probar que eso funcione. Además me hiciste darme cuenta que el tema de "ser más largo" es un sin sentido -quizá- porque según he visto las cadenas al compararlas como x < y se fija cual está primero en "el abecedario", no cual es más larga. So, tendría que repensar en ese tema.

2ndo problema: Definir las condiciones de solución.
Esto es lo que te decía al principio, lo de "traducir". O, en este caso, ver si es necesario definir variables internas o no, o si conviene. O sea: ¿Cómo el programa puede chequear si un número está en la serie de Fibonacci?
Normalmente uno haría algo como:
Código a:
Ver original
  1. N = 1
  2. Num1 = 1
  3. Num2 = 1
  4. Si N == 1
  5.     Num1 = Num1+Num2
  6.     N=2
  7. sino
  8.     Num2 = Num1+Num2
  9.     N=1
  10. fin del si

Es decir:
Código a:
Ver original
  1. // Frame 1:
  2. N = 1;
  3. Num1 = 1;
  4. Num2 = 1;
  5. // Frame 2:
  6. if (N == 1) {
  7.     Num1 = Num1+Num2;
  8.     trace(Num1);
  9.     N = 2;
  10. } else {
  11.     Num2 = Num1+Num2;
  12.     trace(Num2);
  13.     N = 1;
  14. }
  15. // Frame 3:
  16. gotoAndPlay (2);

y entonces...
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
...y entonces no hay que analizar si un número está en la serie o no, o al menos puede asumirse que está...

Pero en mi método para hacer eso tendría que variar el Act de forma que haga eso, pero mira cómo lo varío:
// ActMod.
M.Act = M.Act+1;

Por supuesto podría crear variables internas como decía, como hice más arriba, pero siento que no tiene sentido ¿son necesarias para resolver un problema? Algunas sí, pero estas...

¿Podría variar el Act "inteligentemente" (al menos mejor que "+1") sin tener que crear otras variables?

Incluso si intento dejar eso de lado, es decir que se sume +1 -lo cual hará la búsqueda más larga, lo sé-, sigue sin solucionarse el problema: ¿Cómo el programa puede saber que un número pertenece a la serie?

Debo hallar una ecuación o algo...

1, 1, 2, 3, 5...

N pertenece a la serie si... (teoría) 40% de N es entero y 60% de N es entero. Esto sería desde el 5. Veamos el siguiente caso... 3, 5, 8. No, la fruta que tiré no cayó en la verdad xD y no volveré a tirar en esto. Aquí dice algo:
https://espanol.answers.yahoo.com/qu...6164509AAwjnDF
pero no entiendo si con perfecto se refiere a entero.

Otro día sigo. No sé qué esperabas encontrar, pero posiblemente resultó distinto, espero que me hayas entendido un poco más y puedas aconsejarme acordemente (y lo mismo otros, aunque dudo que alguien lea todo esto xP ). Básicamente es que tengo una estructura con la que pienso que se puede definir cualquier problema, lo cual quizá sea un error, pero debe haber una estructura que permita eso, simplemente requiere más flexibilidad ¿cómo sería?

Por mi parte me he dado cuenta de varias cosas gracias a tu 1er problema, por lo que te daría un +10.

PD: Suerte que planteaste el problema en ese orden:
Serie, primo.
Sino hubiese analizado cual de los primos pertenecen a la serie xD
__________________
"No se puede borrar hasta", PHPeros.

Última edición por Tachikomaia; 08/10/2015 a las 08:58