Maravillosos Matemáticos Muertos…

Thursday 4 de January de 2007

Habiendo mencionado anteriormente al Proyecto Euler, me pareció prudente expandir sobre el tema, ya que mezcla dos de mis pasiones: La programación y la matemática (entre otras, se incluye la literatura, y algunas artes manuales). El proyecto propone resolver problemas matemáticos (no demasiado complejos, pero sí largos) mediante programación. Además incluye un sistema de puntaje dinámico: Todos los problemas empiezan con un valor de 20, pero si un problema es resuelto por muchas personas, se da por asumido que es fácil, y su valor baja. Además, si alguien lo resolvió, su puntuación baja para reflejar el nuevo valor del problema.

Aunque claramente se podrían resolver mediante fuerza bruta (si no todos, la gran mayoría), recomienda, y anima, a hallar soluciones elegantes y eficientes para resolver los problemas…

Por ejemplo, para citar el primero de los problemas, pide la suma de todos los múltiplos de 3 o 5 menores que 1000.

La forma más «inocente» de hacerlo es recorrer de 1 a 999, y si el número es múltiplo de 3 o 5, sumarlo.

Una forma «inteligente» es primero sumar todos los múltiplos de 3 (contando desde 3, de 3 en 3), y después todos los de 5, siempre que no sean múltiplos de 3. Esto reduce de unos 2000 ciclos a cerca de 50. Está bien, concuerdo con que con millones de ciclos por segundo, la diferencia es imposible de detectar para un humano, pero si es necesario repetirlo muchísimas veces, (por ejemplo, una rutina gráfica para un juego), se empieza a ver… Pero dejo los quejidos sobre optimización para el próximo post.

Por ahora, los dejo con el sitio, y algo más de 100 problemas para que pasen el rato.

powered by performancing firefox

Comentá:

XHTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">