La Sombra de Dijkstra

Sobre el arte y la práctica de la programación

El Ganador Del Desafío De Junio 2012, Problema De Hamming

| Comentarios

Es hora de entregar el premio al ganador del desafío de Junio.

Participaron:

  • Javier Rovegno: con dos soluciones, la segunda es correcta, esencialmente calcula todos los números posibles dentro del rango, y luego ordena la secuencia. Su solución está aquí.

  • Felipe Bañados: con una elegante solución en Haskell, que basicamente implementa la misma solución que expuse en el post anterior, es decir, calcular las secuencias H(p1), H(p2) y H(p3) y luego el merge. Su solución está acá.

  • Carlos Rodriguez: que colaboró con una versión en Pascal! y otra en Python. Al igual que Javier implementa el mecanismo de calcular las secuencias y luego ordenarlas. La versión en pascal está acá y la versión en python acá.

  • Mauricio Quezada: con el mismo tipo de solución en python que propuse inicialmente, generación de los iteradores y luego un merge. Esa versión está acá.

  • Daniel Molina, con una muy eficiente solución en Haskell, tengo la impresión que trata de usar el mínimo de memoria posible, pero supongo que un experto haskell debería opinar. Su solución está acá.

  • Aldrin Martoq, con dos soluciones en C, la segunda versión opera con enteros de 128bits, es la solución más rápida de todas (excepto por la de Jed Davis), claro que tiene un alto uso de memoria.  Su solución en 128 bits está acá.

Les agradezco a todos su tiempo y participación.

Los dos finalistas son Aldrin Martoq y Daniel Molina, pues tienen las soluciones más eficientes de todas las presentadas.

La verdad es que es muy dificil decidir el ganador entre los dos, la razón es que la solución de Aldrin es la más rápida y ocupa menos memoria, pero no es capaz de calcular la secuencia H(7,13,19,10000), el programa de Daniel sí lo hace  y en menos de 1 segundo. Por otro lado, la solución de Aldrin puede calcular en menos tiempo la secuencia H(2,3,5,100000).  Pero la versión de Daniel supera el limite H(2,3,5,100525) de la solución de Aldrin. Por esto último decido que el ganador es Daniel Molina, con quien me pondré en contacto para enviarle su Gift Card.

Gracias nuevamente por participar, estén atentos al próximo desafío.

Comentarios