Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Concurso De Programacion

Iniciado por MA]Mestre, 09 de Marzo de 2005, 04:06:21 PM

« anterior - próximo »

ethernet

Cita de: "CoLSoN2"
Cita de: "Mars Attacks"Ethy, ¿me explicas dónde colocas la parte de sentencias del true y del false en tu "!a"? No he entendido tu cambio.
mande??

!a devolverá true si 'a' es cero, y false en caso contrario.
déjalo colson, es medio grafo, no hay nada que hacer :P

marsy ;@@

Mars Attacks

 Capullos de mierda, con "false" y "true" me refiero a "sentencias que hacer en caso de que a sea falso" y "sentencias que hacer en caso de que a sea verdadero"  <_<

Ale, iros a jugar con los playmobil, anda. Tanto código os corroe las neuronas  :P  

JuanK

 146  (uoh)

gdl , me imagino que cuando hablas de backtracking utilizas recursividad verdad?
O_O  Ni se me ocurre como aplicarla sin aumentar caracteres.

Llegue a los 129 de cronodragon
quitando esto:

#include = 17 caracteres,
pero el mismo cronodragon dijo que si lo usaba
asi que tendre que buscar 17 o mas bytes que me sobren, lo cual segun veo no sucede en nin caso...

Asi qye tendre que seguir buscando pistas matematicas antes de enviarlo y que no me pase lo de _Grey que lo envio antes de mejorarlo mas de lo que lo habia hecho.

JuanK

 143  :huh:

De donde diantres puedo descontar 23 caracteres o al menos 14 para igualar a cronodragon? (grrr)

gdl

 
Cita de: "JuanK"gdl , me imagino que cuando hablas de backtracking utilizas recursividad verdad?

Usé el backtracking para comprobar que la estructura de la expresión matemática que genera el cuadrado mágico es la de mínima longitud. No usé recursividad en el propio código porque lo aumenta de tamaño (unos cinco bytes).

Y eso no es bueno :D

JuanK

 
CitarUsé el backtracking para comprobar que la estructura de la expresión matemática

dirás que soy muy ignorante...

pero entonces que es hacer backtracking? como se hace? o con que temas se relaciona para poder buscar y aprender a hacerlo?

Estudias matematicas o algo asi?

sés

Cita de: "JuanK"Llegue a los 129 de cronodragon
quitando esto:

#include = 17 caracteres,
Pero eso es obligatorio ^_^
Soy indeciso... ¿o no?

JuanK

Cita de: "sés"
Cita de: "JuanK"Llegue a los 129 de cronodragon
quitando esto:

#include = 17 caracteres,
Pero eso es obligatorio ^_^
En serio??
Ya he leido eso 1' de veces...
nadie ha dicho que no lo sea.

nostromo

 
Citarpero entonces que es hacer backtracking?

Es un esquema/patron para resolver problemas a lo bruto. Consiste en probar casi todas las posibles soluciones a un problema hasta encontrar la/s solucion/es correctas.

Citarcomo se hace?

Lo importante es definir el problema y su espacio de soluciones.
Un ejemplo tonto: dados dos numeros x e y. Si 1<=x<=10 1<=y<=10  ¿cuando sumarán x+y=10?
Espacio de soluciones: todos los pares (x,y) con 1<=x<=10 1<=y<=10  ...tendrás que probar las combinaciones...

Se puede hacer recursivamente o sin recursividad, esto no tiene que ver con backtracking. Lo que caracteriza a backtracking es que recorre "un arbol" de soluciones, donde cada nodo es una posible solucion  y puede descartar ramas enteras con lo que acelera algo el proceso.

Citaro con que temas se relaciona para poder buscar y aprender a hacerlo?
Algoritmos.
Libros:
Aho, A.V.; Hopcroft, J.E.; Ullman, J.D.: Estructura de datos y algoritmos. Addison- Wesley, 1988.
- Brassard, G.; Bratley, P.: Fundamentos de Algoritmia. Prentice-Hall, 1998.
- Cormen, Leiserson, Rivest: Introduction to algorithms. MIT Press, 1991.


Un saludo

JuanK

  (ole)
te debo una
mil gracias nostromo!!!

Veremos si puedo hacer algo con lo que tengo del algoritmo sino pues ya aprendi algo nuevo  (nooo)

Gracias de nuevo.

_Grey

 
Aprovechando que sale el tema; me quede impresionado cuando lei esto de gdl:

CitarHe hecho unas búsquedas de árboles de expresión con backtracking y las únicas expresiones que he encontrado eran modulares (% en C) y necesitaban unos 120bytes.

Mas que nada por que no tengo idea de que queria decir. Despues de buscar un poco, encontre algo de arboles sintacticos en un libro de compiladores, cuando dices "árboles de expresión con backtracking" te refieres a que has optimizado una determinada expresion haciendo un arbol con ella ,nop???

Ni sabia que se podia hacer .... en mi libro de "Fundamentos de programacion" el trato que se le da a los arboles se aleja de esas esquisiteces... me tendria que comprar algo mas actualizado supongo.

Saludos, y suerte!

Pogacha

 Un backtracking supongo que sabes que es, pruebar todas las combinaciones con algunas restricciones de corte y en orden por corazonada, o sea hago un algoritmo que combine todas las expresiones posibles restringiendo a que sean validas y que den el resultado que quiero con el minimo largo posible y lo dejo correr, el algoritmo es np y por ende no seria practico pero lo bueno es que lo puedes dejar corriendo y el ultimo dia  tomas la mejor solucion que has hecho, de todas maneras el algoritmo seria muy complejo y dudo que realmente lo halla implementado de la forma que se me ocurre a mí, seguramente pudo haber restringido a la parte matematica estricta con aritmetica simple y tan solo ir de cabeza a la expresion de la funcion ElementoDelCuadradoMagicoDeNImpar(n,x,y), o sea con las operaciones basicas, de todos modos el algoritmo seria complicado y digno de aplaudir...
Saludos

gdl

Cita de: "Pogacha"seguramente pudo haber restringido a la parte matematica estricta con aritmetica simple y tan solo ir de cabeza a la expresion de la funcion ElementoDelCuadradoMagicoDeNImpar(n,x,y), o sea con las operaciones basicas

En efecto. Sólo usé las operaciones muy muy básicas. De hecho, he tenido un problemilla con la parentización. Todos los operadores (incluso las constantes porque al ser el N máximo 9, son todas de un carácter) ocupan un caracter. ¡Excepto el de paréntesis! Me he dado cuenta que tener el árbol con el menor número de nodos no es igual a tener la expresión más corta. Así que, hoy por hoy ya no estoy seguro de tener la expresión mínima teórica.  (grrr)

JuanK

 cielos ahora tendre que centrarme solo en alcanzar o vencer a cronodragon,
aunque con lo que dijiste solo quedaron en claro 2 cosas para mi:

1- Cronodragon tiene el codigo mas corto
2- No he entendido un pito de lo que es el backtracking

Mars Attacks

 Pues una traza de un ejemplo sencillo. Para resolver la ecuación x+y<2 con x e y en el rango entre 0 y 9 lo resolverías así:
x=0
y=0
x+y<2? sí -> x=0, y=0 es una solución
x=1
y=0
x+y<2? sí -> x=1, y=0 es una solución
x=2
y=0
x+y<2? no
x=3
y=0
x+y<2? no
...
x=0
y=1
x+y<2? sí -> x=0, y=1 es una solución
x=1
y=1
x+y<2? no
x=2
y=1
x+y<2? no
...
y así hasta que se hayan probado todos los valores. Dicho de otro modo: tanto si aciertas como si fallas, vuelves atrás hasta el último cambio y pruebas el siguiente elemento.







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.