04/01/2009
Project Euler : Solution au problème 4, en Python
Avant de me faire un petit quelque chose à manger, un peu de code en apéritif. Ma solution au problème 4, toujours en Python puisque c'est quand même le but de la manoeuvre. Dix minutes de code, y compris les essais dans l'interpréteur pour les arguments de "range", sept secondes d'exécution. Pas exactement une perte de temps.
Le tout en un brin plus générique que dans ma version C, puisqu'on peut spécifier la dimension du problème. Je vais continuer dans cette approche, les énoncés sont souvent exprimés en donnant la solution d'une dimension et demandant la solution d'une autre dimension; en procédant assez génériquement j'ai plus de facilité à valider l'algorithme.
#! /usr/bin/env python
# 2009/01/04 - euler4.py
# Solution au Probleme 4 de Project Euler
# http://projecteuler.net/index.php?section=problems&id=4
# Jean Karim Bockstael - jkb@jkbockstael.be
def is_palindrome(n):
normal = repr(n)
reverse = ''
i = len(normal)
while i > 0:
i = i - 1
reverse = reverse + normal[i]
return normal == reverse
def euler4(n):
lower = 10 ** (n - 1)
higher = 10 ** n
largest = 0
for i in range(lower, higher):
for j in range(i, higher):
product = i * j
if is_palindrome(product):
if product > largest:
largest = product
return largest
print euler4(3)