Project Euler Solved

Publicado el 1 de febrero de 2013

Pues ya ha pasado un mes de este 2013 y al menos uno de mis proyectos para este nuevo año sigue adelante. No es más que aprender F#. Y aunque la verdad que este primer mes ha sido bastante intenso en cuanto a actividades, estoy bastante satisfecho con la dedicación que le estoy dando a este nuevo lenguaje. Leer, practicar, seguir leyendo y practicar de nuevo. No hay más secretos para aprender, bueno, eso y que te apasione lo que haces. Y sin duda, F# y la programación funcional en general me parecen fascinantes.

¿Todo esto a que viene? Pues básicamente es una excusa para mostrar uno de los recursos que estoy utilizando para practicar la programación con F#.

A estas alturas seréis pocos los que no conozcáis Project Euler (www.projecteuler.net), una web que desde hace unos cuantos años, viene planteando problemas matemáticos que deben ser resueltos mediante un algoritmo computacional. Hasta ahora, hay más de 400 problemas y se puede participar sin importar el lenguaje utilizado ni la solución utilizada. Únicamente se sugiere que la solución que demos muestre el resultado en menos de un minuto en un ordenador “modesto”, así que creo que esta sugerencia nos la tenemos como una forma de obligarnos a implementar un algoritmo con cierto grado de optimización :) Algo, por cierto, que espero ir consiguiendo con el tiempo…

Pero como programar solo es muy aburrido, @quiqu3 y yo hemos decidido retarnos a un duelo a primera sangre. Yo implementaré los problemas que elijamos en F# y @quiqu3 en C#. De momento no tenemos más reglas, ya veremos cómo va y si tenemos que añadir más restricciones. ¿Y quien gana? Pues tampoco queda muy claro, valoraremos la claridad del código, el rendimiento… Lo importante es lo que podemos aprender.

Pero esto no queda solo entre nosotros dos, os invitamos a que colaboréis con otros lenguajes (o con los mismos). He publicado en GitHub https://github.com/acasquete/projecteulersolved la solución que contiene el primer problema resuelto en F#. Espero que de forma habitual vayamos publicando nuevas soluciones. Todas las publicaciones las haré bajo el tag projecteulersolved, y aprovecharé para explicar algún concepto de programación funcional y F#.

Hemos comenzando con el primer problema, que consiste en obtener la suma de los números naturales menores de 1000 que sean múltiplos de 3 o 5. Antes de ver la solución, os recomiendo que dediquéis tiempo para intentar resolverlo vosotros mismos. No hay nada más gratificante que el obtener el resultado correcto.

¡A programar!

Tags : F#