Compartir:



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 motivacion 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 seguír, para quien no este enterado, un Coding Constest ( o Programming Constest ) es un concurso de programacion, en donde el organizador presenta un conjunto de problemas de logica o matematica y los concursantes deben escribir programas capaces de resolverlos. Lo que se evalua generalmente es el numero de problemas resultos, el tiempo de ejecucion del programa, la eficiencia computacional, la elegancia, etc. Las temáticas qué se abórdan son por ejemplo, teoría de números, análisis de datos, inteligéncia artificial, criptografía, seguridád, etc.

Uno de los concursos mas antiguos es el ACM-ICPC ( ACM International Collegiate Programming Contest ) es un concúrso 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 tecnologicas. 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 tambien se lanzó el concurso de programacion ( 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 recibirian una puntuacion de 0 a 5 para: la elegancia matematica y computacional , y para la eficiencia en el uso de los recursos(memoria y CPU).

No existia ninguna restriccion para los participantes. Y en cuanto a el lenguaje de programacion se podia usar cualquiera que disponga de interprete o compilador libre, aunque sugerian:

  • C
  • C++
  • Python
  • Java
  • R
  • Fortran
  • Octave

Los programas se evaluaban en una pc con Debian jessie de 64 bits. Se podian usar bibliotecas libres que esten en los repositorios de Debian y tambien se permitia el uso de las utilidades estandar de UNIX. En caso de que algun problema no necesitara el desarrollo de un programa, se podia presentar la solucion matematica argumentada.

Se premiaron con $10000, $5000 y $3000 a 3 partcipantes 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)

Aca 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 atencion el numero de participantes, fueron tan solo 36 personas(esperaba almenos 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 solucion, lo realice en los ultimos 10 minutos como para entregar algo.

Estuve bastante entretenido con esta experiencia aunque solo el sabado le puede dedicar una buena atencion y el lunes me dedique a preparar la presentacion de las respuestas, me queda pendiente la solucion 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 algun feedback.

Ariel Sperduti avatar

Full Stack web development, Ingeniero Electronico

Ir Arriba!