martes, 26 de abril de 2016

Coding Contest CITES 2016

Participe de mi primer Coding Contest, que organizo Cites, y voy a publicar una serie de posts con mis soluciones a los problemas planteados. Desde que me entere de este tipo de concursos he tenido la motivación de participar, no con la esperanza de ganar, si con la idea de ponerme a prueba y con la curiosidad de conocer de que tratan los problemas y el nivel que se espera.

¿ Qué es un Coding Contest ?


Antes de seguir, para quien no este enterado, un Coding Constest ( o Programming Constest ) es un concurso de programación, en donde el organizador presenta un conjunto de problemas de lógica o matemática y los concursantes deben escribir programas capaces de resolverlos. Lo que se evalúa generalmente es el numero de problemas resueltos, el tiempo de ejecución del programa, la eficiencia computacional, la elegancia, etc. Las temáticas qué se abordan son por ejemplo, teoría de números, análisis de datos, inteligencia artificial, criptografía, seguridad, etc.
Uno de los concursos mas antiguos es el ACM-ICPC ( ACM International Collegiate Programming Contest ) es un concurso anual entre las universidades del mundo y que esta sponsoreado por IBM.

¿ En qué consistió el CITES Coding Contest 2016 y cómo sé desarrolló ?

CITES Coding Contest 2016 CITES es Centro de Innovación Tecnológica Empresarial y Social del Grupo Sancor Seguros, el cual es una incubadora de empresas de base tecnológicas. Este año lanzaron el CITES Ideas 2016 en donde seleccionaran proyectos basados en TICs que necesiten un tiempo de 3 meses en desarrollar un prototipo o primer producto(MVP) y también se lanzó el concurso de programación ( en el cual participé) que inició el viernes 8 de abril de 2016 a las 12:00 PM y terminó el lunes 11 de abril a las 12:00 PM, duró 72hs.
Los incisos de cada problema correcto recibirían una puntuación de 0 a 5 para: la elegancia matemática y computacional , y para la eficiencia en el uso de los recursos(memoria y CPU).
No existía ninguna restricción para los participantes. Y en cuanto a el lenguaje de programación se podía usar cualquiera que disponga de interprete o compilador libre, aunque sugerían:
  • C
  • C++
  • Python
  • Java
  • R
  • Fortran
  • Octave
Los programas se evaluaban en una pc con Debian jessie de 64 bits. Se podían usar bibliotecas libres que estén en los repositorios de Debian y también se permitía el uso de las utilidades estándar de UNIX. En caso de que algún problema no necesitara el desarrollo de un programa, se podía presentar la solución matemática argumentada.
Se premiaron con $10000, $5000 y $3000 a 3 participantes con las mejores soluciones.
Los problemas que se presentaron fueron:
  1. El primo de Fibonacci (Teoría de números)
  2. Un perrito y un pajarito (Cálculo numérico)
  3. La inclinación del cilindro (3D scanning/printing)
  4. Recordando a Dennis (Criptografía y seguridad)
  5. El problema del viajante argentino (Optimización e inteligencia artificial)
Acá esta el PDF que enviaron, con las consignas de cada problema. Cree un repositorio en Github en donde publicare mis soluciones propuestas y se aceptan pull request para mejorar las soluciones o proponer alguna.
Me llamo la atención el numero de participantes, fueron tan solo 36 personas(esperaba al menos 100), de las cuales 12 completaron los 5 problemas(33,3%), no quiere decir que estaban todos bien. Yo no estoy dentro de esos 12, solo puede resolver 4, me falto el el problema del viajante, tenia una idea de como resolverlo, pero no llegue. Y el problema 3 del cilindro, no fue una buena solución, lo realice en los últimos 10 minutos como para entregar algo.
Estuve bastante entretenido con esta experiencia aunque solo el sábado le puede dedicar una buena atención y el lunes me dedique a preparar la presentación de las respuestas, me queda pendiente la solución del ultimo problema.
La idea es presentar durante esta semana las soluciones que propuse y como las lleve a cabo, con el fin de compartir y recibir algún feedback.
Comparte este articulo
  • Comparte con Facebook
  • Comparte con Twitter
  • Comparte con Google+
  • Comparte con Stumble Upon
  • Comparte con Evernote
  • Comparte con Blogger
  • Comparte con Email
  • Comparte con Yahoo Messenger
  • More...

0 comentarios:

Publicar un comentario