Programacion

Eventos de programación: Google HashCode

Una de las cosas en las que más me gusta participar, son los eventos de programación, y la semana pasada no pude dejar pasar la oportunidad de concursar en el Google HashCode. Por eso hoy te cuento por qué deberias asistir a este tipo de eventos, los cuales considero muy importantes y cómo funciona uno de los más conocidos, el Google HashCode.

¿Por qué ir a eventos de programación?

Apuntarte a un evento de programación, tiene multitud de beneficios:

  • Compruebas tus conocimientos y eres capaz de medirlos.
  • Conoces compañeros del sector, lo que te va a ayudar a incrementar tus contactos.
  • Aprendes nuevas técnicas para resolver problemas.
  • Obtienes stickers y regalos de tus empresas favoritas.

¿Qué es el Google HashCode?

El Google HashCode es un evento mundial realizado por Google de manera anual, donde los programadores se enfrentan a un problema similar a los que se enfrentan los ingenieros de Google. La manera de participar es online, aunque algunos, como nosotros, nos reunimos en hubs o centros de participación. Otra característica es que no admiten que se trabaje de manera individual y por ello es necesario realizar grupos.

Los problemas a resolver en el HashCode

Según mi experiencia en este evento, todos los problemas a resolver están enfocados a minimizar o maximizar un resultado. Esto no es trivial, ya que se trabaja con varios conjuntos de datos, siendo algunos de ellos de un tamaño considerable. El problema de este año fue optimizar el uso de diversas cachés para un servidor de video (YouTube), teniendo en cuenta las latencies y el número de peticiones:

El enunciado completo lo podéis ver aquí. Otros problemas planteados en años anteriores han versado sobre minimizar la ruta que debería seguir un coche de Google Street View para tomar imágenes de todo un barrio, o sobre minimizar rutas para el reparto de paquetes con drones.

Las soluciones del Google HashCode

Sí, no es una errata, el problema planteado en el HashCode no tiene una solución única, es más, es posible que la mejor solución planteada no sea la más óptima. Así que cada equipo, siguiendo las normas del enunciado se encarga de generar un fichero de texto con los pasos que se deberían realizar. Este fichero es analizado por el servidor de Google y nos genera una puntuación.

Como podéis ver en la imagen superior, el panel de soluciones consta de 3 apartados:

  1. La opción para subir nuevos ficheros con los pasos.
  2. El panel donde nos informa de la mejor puntuación obtenida para cada conjunto de datos.
  3. El panel donde podemos ver los puntos para cada archivo de solución subido.

Otra característica remarcable, es que se puede trabajar en cualquier lenguaje de programación o tecnología que uno desee. Por lo que esto ayuda mucho a plantear soluciones muy diversas.

En nuestro hub, algunas de las ideas que se plantearon para resolver el problema anterior, fueron las siguientes:

  • Utilizar distintas estructuras de datos, centrándonos en aquellas cuyo uso es más rápido (arrays, particionado o chunks, etc).
  • Utilizar diversas funciones de coste, algunas de ellas teniendo en cuenta el tamaño del video y otras no.
  • El uso de algoritmos evolutivos, que fuera mejorando la solución en cada iteración (esta solución fue la que mejor funcionó).

 

Espero que este artículo te haya gustado, ¿has participado en este evento o en otros similares?, coméntanos cómo fue.

 

Un saludo.

Jorge Durán

Entusiasta de la tecnología desde los 10 años, desarrollador y creador de varios proyectos de software y autodidacta por naturaleza. Ingeniero Informático por la USAL y .Net backend developer en idealista.

Share
Publicado por
Jorge Durán

Recent Posts

Docker: conceptos principales y tutorial paso a paso

Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite…

3 años hace

Crea diagramas rápidamente usando código

Cada vez estamos más acostumbrados a usar código para generar la infraestructura (IaC), documentar nuestro…

3 años hace

Procesamiento del lenguaje natural con ElasticSearch

Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es…

4 años hace

Elige tecnología clásica y aburrida

Uno de los problemas que solemos tener los programadores, es que nos gusta estar a…

4 años hace

Cómo usar Docker en Windows

Docker es una de las herramientas más usadas por los desarrolladores, sin embargo, usarlo en…

4 años hace

Analiza el coste del uso de JavaScript

Como seguramente sabrás el uso de JavaScript ha crecido exponencialmente en los últimos tiempos, sin…

5 años hace