Project Euler

by Ruben Badaró on 18 Setembro, 2008

in geral

Leonhard Euler

O Project Euler, existente já desde 2002, é descrito da seguinte forma

Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.

The motivation for starting Project Euler, and its continuation, is to provide a platform for the inquiring mind to delve into unfamiliar areas and learn new concepts in a fun and recreational context.

Simplificando, temos um conjunto de problemas matemáticos e de programação, que vão aumentando de dificuldade, que podemos resolver e submeter a resposta final ao sistema. Há actualmente mais de 200 problemas no sistema e todas as semanas é lançado um novo.

Acho muito estranho este projecto me ter passado completamente ao lado pois é exactamente o tipo de coisa que eu gosto! Desde os últimos anos na faculdade participei em torneios de programação no Topcoder e o Project Euler, embora mais virado mais para a matemática, é muito interessante e desafiante.

O Project Euler é uma mistura entre algoritmos e matemática, sendo que são necessárias competências em ambas as áreas para resolver muitos dos problemas. Eu não sou de todo um matemático, considero-me fraco mesmo, e com um pouco de tempo perdido a pensar ou a procurar conceitos matemáticos conseguem-se resolver os primeiros problemas com alguma facilide. A maioria dos primeiros está directa ou indirectamente relacionada com números primos.

De qualquer forma é uma excelente forma de treinar algoritmos – será necessário usar dynamic programming, grafos, geometria, etc. – e estruturas de dados.
Ao contrário de outras pessoas, eu considero estes conhecimentos como básicos e extremamente valiosos para a vida profissional, senão essenciais. Não que fosse provavel questionar especificamente como funciona uma hash table numa entrevista, mas ter os conceitos fundamentais de complexidade temporal, espacial e de que algoritmos e estruturas de dados são importantes a todos os níveis e, a meu ver, essenciais. Mas isto é tema para um próximo post.

Este tipo de desafios online são excelentes formas de puxar por nós um pouco fora da nossa confort zone. Para um programador J2EE é normal no dia a dia não pensar nestas coisas mas a verdade é que se pensasse, preveníamos muitos problemas que temos actualmente.

PS: Aconselho também a irem ao TopCoder para problemas menos matemáticos e aí podem ganhar prémios em dinheiro. Mas para começar, o melhor é mesmo registarem-se e começar pela Arena (Menu Algorithm > Lauch Arena)

Leave a Comment