in ,

Project Euler: Matemática y programación

Si perteneces al grupo de personas que gustan de enfrentarse a un buen desafío, Project Euler es ideal para ti. Se trata de una serie de problemas que involucran matemáticas y programación, que los aficionados deben intentar resolver. En este momento hay 309 problemas propuestos, y en pocas horas estará disponible el número 310. ¿Te animas a ser el primero en resolverlo?

No son pocos los programadores que gustan de los problemas matemáticos. También es cierto que a muchos matemáticos les gusta programar. A ambos grupos seguramente les interesará conocer el denominado Project Euler, una colección de desafíos que requieren de talento matemático y habilidades relacionadas con la programación para ser resueltos. El objetivo del proyecto es simplemente estimular a los participantes a desarrollar mejores habilidades de programación, aprender conceptos nuevos y -sobre todo- divertirse. El nombre de este proyecto honra a Leonhard Euler, el brillante matemático y físico Suizo cuyo aporte más conocido es el número de Euler (e ≈ 2.71828), utilizado como base del logaritmo natural. Euler realizó trabajos relacionados con el Cálculo infinitesimal, la Teoría de Grafos, la dinámica de fluidos, óptica y astronomía. Por todo esto se lo considera uno de los matemáticos más importantes de todos los tiempos.

Utilizando “fuerza bruta” eso no se resuelve en menos de un minuto. (Flickr/JaulaDeArdilla)

Los problemas propuestos (periódicamente se van agregando nuevos) suelen ser bastante complicados, pero con un poco de imaginación, habilidad matemática y una buena dosis de lógica, los podrás resolver. Para conocerlos no hace falta registrarse. Con solo visitar la web puedes acceder a la lista de problemas disponibles y comenzar a resolverlos. Pero si quieres ir “sumando puntos” a medida que los resuelves, puedes crearte una cuenta de usuario (solo necesitas unos segundos para hacerlo), y comenzar a recorrer la lista de problemas como todo un profesional. Un aspecto interesante del Project Euler es que -si los encaras de la forma correcta- los problemas propuestos se resuelven utilizando un ordenador poco potente en menos de un minuto. Por ejemplo, el problema número 48 dice: “Encuentra los últimos 10 dígitos de la serie  1¹ + 2² + … + 1000¹⁰⁰⁰.” Está claro que utilizando “fuerza bruta” eso no se resuelve en menos de un minuto, por lo que deberás concentrarte en encontrar un algoritmo eficiente que te evite esperar años mientras tu pobre ordenador trabaja.

Puedes usar tu lenguaje de programación favorito (Wikimedia/Varyvol)

Solo se debe brindar la respuesta correcta. No importa la forma en que hayas escrito tu programa, algo bastante lógico ya que siempre hay varios caminos para lograr el mismo objetivo. Eso significa que puedes usar tu lenguaje de programación favorito (Java, PHP, Cobol, Pascal, C, C++, ensamblador o incluso el BASIC de tu vieja Commodore 64) para resolver cada problema. Cuando lo hayas hecho, tendrás acceso a un foro en el que podrás comparar tu solución con la de otros participantes y ver quien obtuvo la mejor, algo que seguramente te ayudará a mejorar tu estilo y resolver los próximos problemas. Por supuesto, si buscas un poco por la red encontrarás las respuestas a casi todos los desafíos planteados y podrás avanzar rápidamente hacia el final. Y de paso, perderás la oportunidad de aprovechar esta genial idea para aprender un montón de cosas nuevas mientras encaras estos desafíos. En definitiva, y a pesar de que no hay “premios” en el sentido tradicional de la palabra, Project Euler puede hacer de ti un verdadero ganador. Si encaras cada problema con tiempo e ingenio, seguramente desarrollarás habilidades nuevas, descubrirás métodos de optimización que ignorabas y pasarás muchas horas entretenido. ¡Y gratis! En este momento hay 309 problemas propuestos, y en pocas horas estará disponible el número 310. ¿Te animas a ser el primero en resolverlo?

Reportar

¿Qué te pareció?

Escrito por Ariel Palazzesi

19 Comments

Leave a Reply
    • [SPOILER]La forma más fácil es generar tu las secuencias de 4 caracteres e ir buscándolas en el vector de dígitos del número tan largo que te dan. Osea, a lo fácil, convertir el número que te dan a una cadena, ir generando las secuencias de 4 dígitos, y si se encuentran, hacer el producto, y así hasta encontrar la mayor. Por supuesto, ignorar aquellas cadenas que tengan un 0.[/SPOILER]

    • [spoiler]tomas tu navegador favorito presinas ctrl+f y escribes el mayor numero de un solo digito (9) de todos los 9 que se resaltan tomas el que tiene los numeros de mayor valor a los lados y has el producto…listo eso nisiquiera es un problema me tomo 30 segundos hacerlo[/spoiler]

  1. Heeeeeeeeeeeeeee!!!!, resolví el primero y en poco tiempo(para mi), unos 20 minutos, aunque no lo hice con programación sino con calculadora pero igual cuenta ya q solo te piden el resultado. Obviamente no voy a dar la respuesta.
    Saludos

  2. Esto resulto mas entretenido, divertido y dificil xD, me voy a juntar con un matematico en la universidad para compartir esta fuente de entretenimiento hahahaha.

  3. hace unos meses comense y comense bien en unos tres o cuatro dias hice 12 problemas, la escuela no me ha dejado continuar, pero es muy interesante, te hacen pensar no solo en como resolver el problema sino el resolverlo de la forma mas optima pues de otra forma tu ordenador puede durar dias o semanas funcionando sin encontrar la respuesta….
    tambien te hace darte una idea de las velocidades de los lenguajes, por ejemplo en programas complicados utilice tanto java como python, y me di cuenta qe java gana en velocidad a python (algo que era de suponerse, pero que jamas lo habia experimentado) ahora me gustaria provar java contra c….
    me devolvieron las ganas de seguir con el proyecto euler!! gracias!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Interfaz multitáctil con Kinect

Tlaloque I: El robot arqueólogo de Teotihuacán