Autor Tema: Mini-Concurso de programacion 2. Las 8 reinas.  (Leído 20115 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #45 en: 19 de Mayo de 2009, 16:30:04 »
Omix, he modificado tu programa para poder compilarlo con C30 y PIC24 y este es el resultado:


Te dejo el proyecto y el fuente, no sea que haya cometido algún error.

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #46 en: 19 de Mayo de 2009, 16:42:23 »
Bien!, este era el objetivo del concurso, implementar algoritmos y descubrir nuevos. Yo no conocía el backtracking, pero si sabia que daba igual que optimizase mi código o no, que para reducir enormemente el tiempo de ejecución (si se podia) había que cambiar de algoritmo. Las implementaciones de omix y de nocturno son validas. El concurso termina mañana, y somos 4 participantes. Colgare una pequeña tabla con 3 o 4 caracteristicas y cada uno votara los códigos, incluyendo el suyo(pero este ultimo no sera valido). Después sumaremos puntos y entregare los premios.

La verdad me ha sorprendido mucho que haya tanta diferencia entre implementar un algoritmo u otro. Eso me hace ver lo importante que es dedicar tiempo a escoger "el buen camino" para resolver un problema antes de lanzarse a resolverlo.
¿De verdad no soporta la recursividad el CCS?¿ni para los PIC de 16 bits? Si es así, yo no utilizaría más ese compilador. ¿Porque la gente lo utiliza tanto si luego, según leo,  tiene más limitaciones que el C30?

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #47 en: 19 de Mayo de 2009, 16:58:58 »
Hey Jgpeiro

Hace unos días encontré estas tablas de comparación entre los compiladores más populares de C, talvez resuelvan tu duda de porqué se usa más CCS que C18 o C30 de Microchip.

http://www.todopic.com.ar/foros/index.php?topic=25946.msg212271#msg212271

A este ritmo creo que quedaré en 4to lugar con mi algoritmo súper lento  :D

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #48 en: 19 de Mayo de 2009, 17:02:22 »
Nocturno, he intentado simular mi algorimo, pero no estoy seguro de si lo estoy haciendo bien o no, porque me sale un warning a la hora de simular, es este "CORE-E0004: Trap due to unimplemented FLASH memory access, occurred from instruction at 0x000982". Hay que configurar algo?.
De todas formas lo he simulado y comentando la parte de la impresión de las soluciones me sale un tiempo de 85ms aprox. y con la impresion unos 237ms, que es lo que has obtenido tu.

Un saludo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #49 en: 19 de Mayo de 2009, 17:42:39 »
Tienes razón, Omix, quitando los printf tu algoritmo se convierte en super-rápido. Enhorabuena campeón.
No sé porqué sale ese error CORE-E0004, ni idea.

Jgpeiro, te confieso que también he sufrido una terrible decepción con CCS al comprobar que ni siquiera compila si hay recursividad.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #50 en: 19 de Mayo de 2009, 18:03:33 »
¿De verdad no soporta la recursividad el CCS?¿ni para los PIC de 16 bits? Si es así, yo no utilizaría más ese compilador. ¿Porque la gente lo utiliza tanto si luego, según leo,  tiene más limitaciones que el C30?

Era sabido que el CCS no soporta recursividad...He aquí lo que yo había leído hace rato:

http://www.ccsinfo.com/content.php?page=newcompilercomp
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #51 en: 19 de Mayo de 2009, 18:26:20 »
 :shock: mis ojos ven mal o dice que el CCS permite sobrecarga de funciones??.
LAS MALVINAS SON ARGENTINAS!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #52 en: 19 de Mayo de 2009, 18:29:26 »
Eso parece! No lo probé...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #53 en: 20 de Mayo de 2009, 14:44:47 »
¡Lo logré!

Reconozco que picado por la asombrosa velocidad del algoritmo de Omix no he parado de darle vueltas al coco a ver de dónde podía recortar ciclos de programa hasta que se me ocurrió la idea.

Os dejo el algoritmo en su nueva versión y una captura de pantalla del Stopwatch: ¡¡¡77ms en 4671897 ciclos!!!.


De todas formas, estoy convencido que en cuanto Omix le eche una pensada al suyo batirá el record, yo ya no tengo de donde recortar.

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #54 en: 20 de Mayo de 2009, 15:05:04 »
¡Lo logré!

Reconozco que picado por la asombrosa velocidad del algoritmo de Omix no he parado de darle vueltas al coco a ver de dónde podía recortar ciclos de programa hasta que se me ocurrió la idea.

Os dejo el algoritmo en su nueva versión y una captura de pantalla del Stopwatch: ¡¡¡77ms en 4671897 ciclos!!!.


De todas formas, estoy convencido que en cuanto Omix le eche una pensada al suyo batirá el record, yo ya no tengo de donde recortar.

jeje, superar ese tiempo va a ser dificil, pero lo le voy a echar un vistazo a algoritmo a ver que se me ocurre.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #55 en: 20 de Mayo de 2009, 16:02:47 »
Apúrense porque ya es 20 de mayo y el tiempo está corto.  :mrgreen:

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #56 en: 20 de Mayo de 2009, 16:59:42 »
Bueno haciendo unas minimas modificaciones en el código he podido reducir un poco más el tiempo en encontrar las 92 soluciones. ¡¡Ahora tarda 72ms!!.


Por otro lado viendo como son las soluciones, se me ocurre otra posible optimización que podria reducir más aun el tiempo de busqueda de las soluciones, pero ahora mismo no estoy lo suficientemente inspirado para que se me ocurra como implementarlo.

Os dejo el código, aunque sigue siendo el mismo, solo lo he reorganizado.

Saludos.



Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #57 en: 20 de Mayo de 2009, 17:23:45 »
Se que este caso no cuenta, ya que esto es un concurso y se premia la velocidad. Pero como programador se el tiempo que dedicamos a revisar nuestros programas con el fin del recortar de aquí y de allá. Y creo que es un gran error sacrificar la simplicidad de un código por ganar algo de tiempo de ejecución (a no ser que sea necesario). Ademas los códigos excesivamente optimizados se vuelven difíciles de manejar, mantener y ampliar, sobre todo si abandonamos el proyecto un tiempo... Una vez leí que "la optimización excesiva es una muerte rápida", y creo que es algo muy cierto, y con los resultados que esta mostrando este concurso creo que queda claro que es mejor intentar reducir el tiempo de un programa con papel y lápiz (o con google y wikipedia) que cambiando/reordenando lineas de código.

Por cierto nocturno, he visto tu código por encima y he visto que tiene muchos comentarios. No los he leído por que aun no he tenido tiempo, pero lo haré. Pero creo que tanto comentario hará tu algoritmo más fácil de entender y te llevarás el premio al algoritmo más sencillo...Por cierto, ¿Alguien ha usado alguna vez herramientas de documentación automática, tipo doxygen?


Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #58 en: 20 de Mayo de 2009, 17:39:25 »
Hace algunos ayeres Diego Redpic nos hablaba de Doxygen...

http://www.todopic.com.ar/foros/index.php?topic=19081.0

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Mini-Concurso de programacion 2. Las 8 reinas.
« Respuesta #59 en: 20 de Mayo de 2009, 18:11:25 »
Nueva versión: "Reinas Vista"


Te lo advierto, Omix, no sigas, que tengo que trabajar  :D