../home

Project Euler

De esos días que decides tomarte un gran y amplio descanso de 15 minutos -como ustedes sabrán soy un rockstar y estoy muy ocupado atendiendo a mis fans-, me puse a vagar por la red, sin rumbo alguno y en modo random… y encontré por ahí tan bonito sitio: Project Euler.

No sé como no lo había descubierto antes si soy geek rockstar y de lo más intrépido.

Trata de un sitio donde el atractivo principal es una serie de problemas matemáticos que deben ser resueltos mediante una rutina de programación. Para darle un valor agregado, uno debe registrarse para empezar a formar parte de la comunidad y se van rankeando los usuarios con mayor puntaje a modo competencia.

¿Cuál es el punto?

Pues resulta que hay cierta persona en mi trabajo que siempre advierte que es inmune a todo, que lo puede todo y lo sabe todo -ñaca-ñaca-. No quiero decir nombres ni hacerles saber de quién se trata. Y entonces, decidí retarlo.

Utilizaremos python, dado que los dos sabemos prácticamente nada y además yo tenía tiempo queriendo ponerme a practicar. Por si fuera poco, para los problemas complejos no ganará quien solamente los resuelva, si no el que genere la rutina que obtenga el resultado en menor tiempo.

Así que, mis primeros dos:

Problema 1: Múltiplos de 3 y 5

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.

Generamos un bucle que “tope” en el 1000 y validamos si el número actual es múltiplo de 5 o 3 utilizando el operador “módulo”. De ser múltiplo lo almaceno en un arreglo y así sucesivamente. Una vez finalizado el bucle, imprimimos la suma de los valores contenidos en dicho arreglo. Piece of cake!

Problema 2: Números Fibonacci Pares

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,… By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

Generamos un bucle while donde la condición se evalúa al inicio. Y en dentro de un arreglo siempre arrastramos el valor anterior de la serie al que está en actual iteración. Es decir, tendríamos algo similar a lo siguiente:

[0, 1] -> [1, 1] -> [1, 2] -> [2, 3] -> [3, 5] -> [5, 8] -> [8, 13] -> [13, 21] -> [21, 34] -> [34, 55] -> …

En cada iteración vamos sumando para finalmente implrimirlo.

¿Nada más?

Pues son 416 problemas y espero poder postearlos terminarlos, aunque se supone no debería publicarlos… suponiendo que los termine, seré bueno y no pondré el resultado =V