Google Code Jam Latinoamérica: Ronda Clasificatoria

Para quienes no lo sepan, me inscribí (y participé) en el Google Code Jam Latinoamérica. Voy contar de qué va la cosa así también ven en qué estoy ocupado en este último tiempo.

Inscripción

Básicamente se podía inscribir quien quisiera. Tenían 3 limitaciones (bases completas – inglés):

  1. No trabajar para Google, filiales, patrocinadores u organizador del evento
  2. Ser residente de uno de 40 países de Latinoamérica
  3. Ser mayor de 13 años de edad

Obviamente, se suponía un acceso a internet para poder participar en las primeras 3 etapas de la competencia que son on-line. La última ronda, sólo para los 50 mejores mayores de 18 años de edad, se realiza en las oficinas de Google de Belo Horizonte – Brazil – con estadía y translados pagos para quienes lo necesiten.

El formulario de inscripción no era demasiado largo pero tenía dos campos interesantes:

  1. Uno en el que preguntaban las razones por las que participábamos. Una lista incluía desde “diversión” hasta “buscando trabajo
  2. Un campo en el que se podía tomar un archivo de tu PC para adjuntar al formularion de inscripción tu Currículum Vitae

No dejan lugar a dudas que utilizan este tipo de eventos para echarle el ojo a gente para contratar. Sin ir más lejos, tengo un amigo que participó en varias competencias de este estilo – ICPC de ACM más específicamente – y ahora está en una pasantía en el Googleplex (California, USA) . ¡Grande Pablo!

Interfaz de usuario

Uno de los co-organizadores del evento es TopCoder: una empresa que se dedica a organizar competencias de programación financiándose de publicidad, desarrollos específicos por una base de programadores estables y la venta de componentes (micro-aplicaciones de uso muy específico) para uso en sistemas más complejos. Gracias a su experiencia y trayectoria en competencias de programación poseían una interfaz Java desde la que se manejaba la competencia completa.

Las cosas que no me gustaron de la interfaz:

  • Era Java puro: si no tenías una PC potente se podía hacer lento y complicaba la cosa, además de necesitar tener el JRE instalado (20 Mb de descarga).
  • No había chat privado, sólo dos salas de chat generales para quienes estuvieran logueados en ese momento. Así que nada de pasarle tu e-mail a alguien con buena onda porque lo veía todo el mundo
  • Ciertas funcionalidades útiles (como la opción para ver la tabla de puntajes) era complicada de acceder y había un montón de opciones raras que ni sé qué hacían
  • Tenían un sólo juego de 3 problemas para entrenar

Sin embargo era muy buena en cuanto a programación se refiriera.

Lo que importa: programar

En esta primera ronda podían participar todos los que quisieran. Los participantes recibían alguno de los 5 juegos de problemas existentes que servía para dividirlos en 5 grandes grupos. Por lo que se discutió en las salas de chat, hubieron en total poco más de 1600 participantes; número que concordaba con los 330 participantes (aprox) que conté en mi set de problemas.

Cada juego de problemas consistía de 2 problemas: uno que valía 250 puntos y otro de 750 puntos. En el momento que te daban el enunciado de alguno (podías elegir cuál ver primero) comenzaba una cuenta regresiva de una hora. Durante esa hora podías programar todo lo que quisieras, compilar tu código e inclusive probarlo antes de entregarlo. Mientras más te demoraras en resolverlo, menos puntos obtenías por él… y por cada vez que lo re-entregaras (la entrega podía fallar las pruebas y/o podrías llegar a querer corregir algo) también se te descontaba puntaje.

Otro detalle importante era la variedad de lenguajes de programación. Podías programar en C++, Java, VB, C# ó Python (aunque advertían que hacerlo en python podía llegar a ser más complicado por cuestiones de eficiencia). El enunciado estaba cuidadosamente explicado, todo detalle importante había sido considerado y te proveían con varios ejemplos – e inclusive explicaciones de los mismos en algunos casos -.

El 2º Juego de Problemas

Para terminar les dejo lo que me acuerdo de los enunciados de los dos problemas del segundo set. Otro día les cuento cómo me fue y/o cómo los resolví. ;)

Problema 1: 250 puntos

Vamos a modificar la Serie de Fibonacci. Sean tres números a, b y n; diremos que:

  • El elemento 0 de la serie será a
  • El elemento 1 será b
  • Cualquier otro elemento de la serie será la suma de los dos anteriores módulo n

Dado un cuarto valor v, uno tiene que indicar el menor elemento de la serie cuyo valor sea v; -1 si no existe ningún elemento de la serie igual a v

Problema 2: 750 puntos

Sea una palabra y un diccionario de palabras. Diremos que dos palabras son similares cuando ocurre uno de:

  • Se agrega una letra cualquiera
  • Se elimina una letra cualquiera
  • Se cambian de lugar dos letras consecutivas
  • Se modifica una letra cualquiera

Uno tiene que devolver, en orden, un arreglo con los índices de las palabras del diccionario que son similares a la palabra dada.

One thought on “Google Code Jam Latinoamérica: Ronda Clasificatoria

  1. ME SIENTO ORGULLOSA COMO BOLIVIANA DE SABER QUE PARTICIPA UN COMPATRIOTA EN EL CODE JAM LATIN AMERICA 2007. ESTO ES UN ESTIMULO PARA MI PATRIA QUE EN ESTOS MOMENTOS NECESITA DE NOTICIAS ASI PARA SEGUIR ADELANTE EN MOMENTOS DE TANTA INCERTIDUMBRE. VICTOR HUGO SOLIZ KUNCAR, ES QUIEN NOS REPRESENTARA EN ESTAS FINALES. Y LUEGO NO DIGAN QUE BOLIVIA ESTA EN LA COLA…..

    LO QUE ME PREOCUPA ES QUE NO SE HAYAN MANIFESTADO LA PRENSA COMO SUCEDE CON LOS MEXICANOS Y ARGENTINOS.. PERO SI LES DIGO. BOLIVIA ES GRANDE ….CARAJO