A pedido del publico - La competencia

Bueno, che! Más vale tarde que nunca. Acá va:

La competencia de Microsoft en general (la Imagine Cup) tiene 6 categorías (ellos las llaman “invitationals”).

Software Design es la que apareció primero, hace como 4 años, y sigue siendo la más importante. La idea es que gente de todo el mundo (en equipos) presentan proyectos de software que pueden ser cualquier cosa, siempre que adhieran a una determinada temática, que está expresada en terminos de “Imaginate algo”. Este año la consigna era “Imagine a world where technology helps us live healthier lives” (o algo así).

Luego de todos los presentados se elige el mejor de cada país, y todos esos van al lugar de la final. Obviamente, esta es la categoría que más gente mueve, porque son como 40 países, y cada uno tiene grupos de hasta 4 personas.
No me queda claro cómo es el tema de las rondas para software design, pero para las otras había 2 rondas iniciales que se hacían por Internet, y los ganadores de la segunda ronda pasaban a la final y venían a India, donde tenían (en general) 24 horas para hacer algo. Tampoco me queda claro cómo aplican las 24 hs a Software Design, pero creo que simplemente exponen su proyecto a los jueces.

Luego se fueron agregando, en sucesivos años, otras categorías, a saber (no sé en qué orden):

  • Algoritmos (la que laburé yo, la explico más adelante)
  • Short Film: Básicamente consiste en hacer un corto sobre algo. No me queda claro quién gana. Los mejores cortos de la 2da ronda vienen para India, y en India tienen 30 o 36 horas para filmar y editar un nuevo corto, que es el que compite para la final.
  • Project Hoshimi: Un juego multiplayer estilo “Command and Conquer” (MUY parecido) donde el participante tiene que escribir el código de Inteligencia Artificial que juega al juego, y los codigos de todos los participantes pelean entre sí. La final fue lo mismo que las 2 rondas anteriores, lo unico que cambiaba era el “escenario” donde peleaban, y también tenían 24 horas para hacer su código, en equipos de a 2.
  • IT: Básicamente se miden conocimientos de IT, configuración de Windows, redes, viruses, cosas así me parece. La primera ronda (yo participé para boludear y pasé) era un cuestionario pedorro sobre cosas de redes y de windows, y de “cultura general”. La segunda no sé, ahí ni me anoté. Pero en la final me parece que tienen 24 horas para hacer algo del estilo “asegurar un windows a prueba de todo”, o “encontrar vulnerabilidades de seguridad”, algo así. Me pareció que era medio para hackers…
  • Interface Design: Boludeo total, como se pueden imaginar. Había que diseñar una interface de usuario, lo cual implica diseño gráfico, look and feel, comportamiento (o sea que hay un programador en el equipo).
    Supongo que gana el más original, o el que hace la interface más amigable, no sé.
  • Me falta una que no me puedo acordar, pero también era boludeo…

Y la que estuve participando yo, que es Algoritmos (la segunda más importante) es parecida a la mayoría de competencias de programación que se hacen mundialmente. Casi como las Olimpíadas a las que iba yo en la Philips, solo que mucho más compleja.

La primera ronda consistía en un jueguito donde tenían un tablerito con botones, y un robotito que caminaba por el mismo, siguiendo las instrucciones de un “programa” que uno escribía. La idea era escribir un programa lo más corto posible que hiciera que el robot camine y apriete todos los botones (habia 50 niveles, cada uno con una forma distinta). El lenguaje en el que se escribía era “H”, un lenguaje inventado por Brian para esto, que básicamente tiene las instrucciones “adelante, girar a la izquierda y a la derecha”, y un par de construcciones que permiten hacer funcioncitas.
El desafío acá era que en cada nivel tenías un límite de longitud para el programa a escribir que lo hacía muy complicado, porque primero había que descubrir el “patrón” de caminata que el robotito tenía que seguir, y luego buscar la forma de implementarlo en pocos bytes.

Es medio difícil de explicar el desafío de este juego, inclusive para programadores. Pero créanme que es muy ingenioso y divertido (y difícil). Yo en un punto tuve que obligarme a no jugar más, porque me había enganchado mal, y no estaba haciendo nada de la 2da ronda, que era para lo que me había contratado Brian.
Me quedé con la leche de saber si hubiera llegado o no a la 2da ronda.

Terminada la primera ronda (tenían como un mes para hacerla), los 200 pibes que tuvieron mejores puntajes (o sea, más niveles resueltos, con códigos más cortos) pasaron a la segunda ronda, que consistía en escribir un programa (esta vez ya en un lenguaje real) y subirlo a una página web que hice yo, que lo ejecutaba y les daba su puntaje.

El juego consistía en un tablerito cuadrado con pelotitas de colores, con una sección del tablero (inicialmente los 4 casilleros centrales) en la que eran manipulables por el jugador. Moviendo las pelotitas (tenían 6 operaciones posibles, básicamente flippear y rotar cuadrados) de adentro de esa sección, tenían que lograr una combinación especial en los bordes que hacía crecer esa parte que era “de ellos”. Cuando la parte de ellos ocupaba todo el tablero terminaba el juego, y el que lo hacía en menos movidas (y “pensando” menos tiempo) ganaba.

Entonces el desafío era escribir un cacho de código que dado cualquier tablero lo resuelva lo mejor posible, y también tenían más o menos un mes.

De acá salieron 6 ganadores, que son los que pasaron a la final. Nótese que lo que voy a poner acá sobre esta gente se basa en lo que ellos posteaban en el foro de la competencia, que es la única referencia que yo tenía de ellos, no lo que supe después:

  • pmnox: Un polaco que era súmamente inteligente, y bastante calladito. Salió primero en la 2da ronda, y no decía mucho en el foro.
  • psyho: Otro polaco, que era mi “favorito” para ganar. El flaco era también super inteligente, y super prepotente (de esa gente que sabe que es más inteligente que el resto, y trata al resto como idiotas, vieron?, un mal bicho). Ni bien empezó la segunda ronda, se puso a laburar, nos reportó todos los errores (los encontró todos él), laburó 5 días, y nunca más tocó su código, y se dedicó el resto del tiempo a jugar a Hoshimi, categoría en la que también llegó a la final. Como las dos eran competencias de 24 horas corridas, simultáneas, tuvo que elegir una, pobre, y eligió bien (la nuestra). Un animalito, que no le caía bien a nadie, pero todos sabíamos que se las traía.
  • TPReal: Otro polaco más, que había hablado un poco en el foro, pero yo no lo tenía muy identificado.
  • noudelbrottesoupe (o algo así): un alemáncito super simpático. Medio freak, pero mucho más normal que la media, y era sin duda el bufón del grupo. En el foro llegó a preguntar “Podemos usar pañales en la competencia para no perder tiempo en ir al baño?”
  • r1cs1: Un húngaro que a todos nos despertaba ternura, porque era el más joven. La imagine cup es un concurso para estudiantes universitarios, y este pibe llegó a la final con 17 años, estando todavía en la secundaria. Aparte era definitivamente el más normal de los 6. Super sociable. Después de conocerlos en persona, este es el único que yo hubiera considerado capaz de tener contacto con el sexo opuesto (a pesar de que psyho se trajo a su novia a la India)
  • grey: Un ruso del que yo no sabía absolutamente nada. Hasta donde yo sé nunca había posteado nada.

Y bueno, la competencia era como en todas las otras, 24 horas de corrido resolviendo lo que hubiera que resolver.
De entrada pmnox (que definitivamente era uno de los favoritos, porque salió primero en la segunda ronda) no se sabía si iba a llegar, porque tuvo un quilombo con la Visa. El flaco la sacó con demasiada anticipación, y se le venció antes de entrar a la India, así que estaba varado en migraciones. La verdad, nos sentíamos todos re mal por el chabón, porque perderse la final por una cosa así era una mierda, y aún si llegaba a llegar, con el cansancio del viaje, el stress de no saber si llegás o no, y etc, en una competencia que tiene mucho de “endurance” (todos lo hemos hecho alguna vez, pero programar 24 horas sin parar no es joda) no tenía chance contra otros 5 que venían “fresquitos”.
Finalmente llegó justo sobre la hora, y los jueces tomaron la decisión de dejarlo dormir 3 horas, y que termine 3 horas después que el resto, para que descanse un poco.

Y ahí nomás arrancamos. Lo que tenían que hacer los flacos eran programitas que resolvieran problemas puros de algoritmos. Les tiro un par de ejemplos para que se den una idea del tipo de problemas:

  • Hay una serie de estaciones de tren, conectadas por vías de tren (no todas contra todas, obvio). Cada una de estas vías tiene un “tiempo” que se tarda en recorrerla. Y en las estaciones hay pasajeros, que quieren ir a otro lado. Finalmente existe una cierta cantidad de trenes. El desafío consistía en diseñar el camino que iba a seguir cada uno de estos trenes para llevar a cada uno a su destino. El puntaje era el tiempo que se tardaba en llevar al último a su casa, y obviamente, cuanto menor el puntaje, mejor.
  • Hay una serie de alfileres puestos en un tablero de corcho (nosotros les damos las coordenadas de todas las alfileres), y la idea es “tender” en estas alfileres un hilo de seda para que se seque. El objetivo es encontrar el camino que sigue el hilo pasando por las alfileres que permita colgar la mayor cantidad de hilo, sin pasar dos veces por el mismo alfiler, y sin que se cruce el hilo contra sí mismo. (Inténtenlo en una hojita de papel, pongan 10 puntitos en cualquier lado y busquen el camino óptimo. Es menos obvio de lo que parece). El puntaje era la longitud de hilo que pudieran colgar.
  • Uno de mis favoritos (porque para mí era imposible). Le dábamos al participante 9 fotos (archivos .JPG) de 10 personas (o sea, 90 en total), diciéndole a qué persona corresponde cada foto.
    Luego le damos 10 más, una de cada persona, sin decirle quién es quién, y el programa de ellos tiene que reconocerlos, en función de las fotos que les habíamos dado antes.
    O sea, un reconocedor de caras.
    Para colmo las fotos que les dimos no ayudaban. Yo me había imaginado este problema originalmente como “le damos fotos de los tipitos de Benetton”. O sea, un negro, un blanco, un chino, una rubia, una pelirroja, una gorda, qué sé yo, algo que medianamente sea fácilmente reconocible…
    No, les dimos fotos de 10 hindúes. Todos iguales. Vestidos igual. Básicamente si se las muestro a ustedes, ni en pedo reconocen quién es quién, imagínense un programita.

Había 9 problemas de este tipo, y el último era un juego multiplayer. Es un juego que se llama Dahdi (que es un juego típico hindú), que es como un ta-te-tí, pero con un tablero más complejo, y la idea es que ponés fichas en el tablero primero (9 fichas cada uno, una por vez), y luego las vas moviendo para armar un 3-en-línea.
Cada vez que armás un 3-en-línea sacás una moneda del contrario del tablero, y el primero que se queda con 2 monedas pierde.
Ellos tenían que escribir el código que jugara a esto, y luego corríamos el código de cada uno contra el de los otros (todos contra todos), y los rankeabamos. Como este era más complejo, valía por 2 problemas.

Y bueno, durante las 24 horas fuimos viendo y fueron pasando bastantes cosas:

  • De entrada yo tenía la impresión de que grey (el ruso) era completamente autista, mayormente porque cuando lo reconocí fuera del salón (antes de la competencia), lo saludé, le tiré la mano, y el tipo sin mover la vista de donde la tenía se limitó a asentir ligeramente con la cabeza. Bueeeno, dije yo… Estará concentrado… Pero durante la competencia tuve la oportunidad de confirmar esta teoría (y Brian me dio la derecha también). El chabón no respondía a ninguna clase de estímulo externo, era loquísimo, se limitaba a asentir apenas.
  • Ya mientras iba pasando el tiempo, nos ibamos dando cuenta de cómo les iba yendo. Mi favorito seguía siendo psyho, y el de Brian era pmnox, a pesar del cansancio. Todos estábamos seguros de que el ruso estaba completamente perdido, pensábamos que el 3er polaco (TPReal) también, y de los otros dos mucha idea no teníamos. Parecía como que aaalgo estaban haciendo y los teníamos como 3ro y 4to. pmnox y psyho eran máquinas, no hay otra descripción posible. Son los únicos que no pararon ni un segundo de las 24 horas, entregaron los dos primeros y se fueron sin mirar atrás. Los otros durmieron de a ratitos, paseaban, caminaban. Estos dos apenas fueron al baño y picotearon algo, y volvían corriendo a la pantalla.
  • Los participantes podían entregar códigos parciales que tuvieran para que nosotros los validáramos contra los casos de prueba “finales” (Que eran equivalentes pero no los mismos que tenían ellos), para asegurarse de que no tenían errores. En un punto tuvimos códigos de psyho y pmnox de suficientes problemas, y hicimos una pequeña competencia extra-oficial. Los dos estuvieron leeejos de todos los demás, pero para mi sorpresa pmnox le pasó por encima a psyho. (Al menos en la extra-oficial)
  • Eramos 4 jueces: Brian que era el capo a cargo de todo, yo que era el que había hecho la infraestructura para los 9 problemas, Jayavant que era un indio que hizo la infraestructura de Dahdi (me quedé muy impresionado con este tipo), y Vincent, que es el flaco que ganó la Imagine Cup 2004, y ahora labura para Microsoft, que estaba medio de “asesor”. Todos dormimos un par de horitas durante la noche, salvo Brian que pasó de largo estoicamente (cosa que no nos sorprendió para nada a los demás).
  • En un punto ofrecimos hacer competencias inoficiales de “Dahdi” en la pantalla grande. La joda es que supuestamente ibamos a hacer esta parte de la competencia a la vista de todos, que iba a ser bastante divertido, pero Microsoft no quería que se supiera ningún resultado hasta el viernes, así que lo máximo que pudimos hacer fue permitir que los voluntarios jueguen entre sí, aclarando que eso no era el resultado “oficial”. Esto ya se dio sobre el final, donde ninguno estaba demasiado metido en la competencia. Ya a esta altura lo que tenían hecho estaba, y mucho no iba a cambiar.
    El primero en voluntariarse fue pmnox (big surprise), y luego siguieron un par que jugaron contra pmnox y sufrieron humillantes derrotas (big surprise). Pero estuvo bueno porque se armó un clima bastante distendido donde ya se pusieron a hablar boludeces entre ellos, se sentaron en los sillones, ya no competían más a esta altura (salvo psyho que ya se había ido, y pmnox que seguía tipeando como una locomotora).

Y bueno, terminada la competencia corrimos el código de todos los pibes contra los casos finales, y se confirmó lo que esperábamos.

  • Ganador indiscutido pmnox, a pesar del cansancio, a pesar de todo. Es una máquina ese pibe. Salió primero en casi todos los problemas, salvo en un par que salió segundo.
  • Segundo clarísimo psyho, muy lejos del tercero. Salió segundo en casi todos los problemas, salvo los que pmnox salió segundo y él salió primero.
    Una cosa que todavía no me puedo sacar la leche es la solución de psyho al problema de los trenes… Todos tenían un puntaje de alrededor de 200.000, o 150.000… psyho tenían 12.000 o algo así… O sea que su solución era 10 veces mejor que la de todos los demás…
    No logré encontrármelo después de la competencia para que me lo explique (pero probablemente no lo hubiera entendido igual).
  • Tercero, lejos del segundo, pero muy claro, TPReal, para sorpresa de Brian y mía, que pensabamos que estaba perdido.

    A ver si estamos claros. Los tres primeros puestos (y toda la guita en premios) fueron para Polonia.

  • Cuarto y Quinto el alemán y el húngaro, no me acuerdo en qué orden, pero estaban cerca.
  • Ultimo lejos el ruso (el autista), que en la mayoría de los problemas entregó soluciones vacías o que no andaban.

Y bueno, creo que esto es todo lo que había para contar.
Me hubiera gustado estar en la ceremonia en la que declaraban a los ganadores, para ver las caras de estos 6 más que nada, pero me tenía que ir para el otro lado.
Una boludez, la verdad. Si me sale el mismo laburo en el 2007 (Korea, crucen los dedos) ni en pedo me pierdo la ceremonia final.

Cuéntenme si me comí algo, si quieren que les cuente alguna otra cosa, lo que sea. No sé por qué siento que algo que ustedes quieren saber quedó afuera.

6 Comments to “A pedido del publico - La competencia”

  1. Clem Says:

    ¿Alguien logro algo con el programa de reconocimiento de fotos o ese fué el que ninguno resolvió?
    24 hs parece un tiempo para hacer algo medianito de uno de los problemas, pero ¿9 o 10? Parece imposible

  2. Clem Says:

    Los pibes no supieron el resultado hasta el viernes? Fueron al Tah Majal y otras bolueces sin saber el resultado?

  3. peptido Says:

    pmnox reconocio 10 de 10 caras en los casos de prueba, y 8 de 10 en los reales (y con muy poco tiempo de procesamiento)

    y lo que hizo fue super simple, promedió colores (de hecho el conchudo dijo que para él, ese habia sido el problema mas facil de todos)

    psyho reconocio 2 de 10, lo cual es suficientemente bajo como para suponer que su algoritmo no hacia nada decente (si tiras 10 numeros al azar por ahi pegas 2 tambien).

    el resto casi nada.

    y yo pensaba lo mismo. si me das 24 hs para hacer el de las caras, algo decente te puedo hacer… pero encima otros 10?

    Y si, fueron al Taj Mahal, y a Delhi, y todo, sin saber el resultado…

    De hecho, en un momento r1cs1 (el jovencito) me pidio si no le podia dar los assemblies de ellos, y las plataformas de prueba, porque querian hacer una corrida entre ellos y sacarse la leche antes.

    Honestamente yo no los tenia, y Brian me dijo que (obviamente) no se lo podiamos dar.

  4. ChinoXXI Says:

    sisi, nos olvidamos de algo, frívolo tal vez para aquellos que no entendemos mucho de la competencia entonces nos basamos en algo terrenal.
    Cuanto ganó el primero?

  5. ruso Says:

    eso! cuanto!? yo te diria que si es una suma importante, en la proxima, ya que ademas te desquitas con Korea, hagas fraude y ganes los 3 premios.

    el de las caras solo ese lo resolvio!? yo te habia dicho que esa solucion era la mas probable! promediar! el cerebro ve rasgos como cosas aisladas, pero no se da cuenta que separadamente se pueden comparar bastante facil. claro que no tengo ni la menor idea como promediar y ponderar, eso lo sabra chubaca. Escuche por ahi que google identifica las fotos porno viendo cuanto “color carne” hay en cada foto. Habria que ver si ese programa les funciona con Travestis.

    atte. rus

  6. peptido Says:

    Nacho:
    Creo que eran 8 lucas para el primero, 5 el segundo y 3 el tercero.

    Rus: Color carne: Si, sin duda eso es lo mas facil. pero no es lo mismo que identificar a Jenna por el color de piel :-)

Leave a Reply