plus palindrome avec 3 chiffres en python
Dans la résolution 4 de http://projecteuler.net/ il dit:
Un nombre palindrome se lit la même dans les deux sens. Le plus grand palindrome fait le produit de deux nombres de 2 chiffres est 9009 = 91 * 99.
Trouver le plus grand palindrome fait le produit de deux nombres de 3 chiffres.
J'ai ce code ici
def isPalindrome(num):
return str(num) == str(num)[::-1]
def largest(bot, top):
for x in range(top, bot, -1):
for y in range(top,bot, -1):
if isPalindrome(x*y):
return x*y
print largest(100,999)
Il doit trouver le plus grand palindrome, il crache 580085
qui, je crois, pour être correcte, mais le projet euler ne le pense pas, dois-je quelque chose de mal ici?
Quand j'ai vénéré pour la boucle, je n'avais pas penser, j'ai enlevé la chose qui vérifie pour les plus grands, je suis bête. Heres le code de travail
def isPalindrome(num):
return str(num) == str(num)[::-1]
def largest(bot, top):
z = 0
for x in range(top, bot, -1):
for y in range(top,bot, -1):
if isPalindrome(x*y):
if x*y > z:
z = x*y
return z
print largest(100,999)
il crache 906609
- Pour info, la réponse est
906609
- Par quels chiffres?
- Parce que j'ai eu 995 * 583 = 580085
- Nous y voilà, je suis bête
- forum.projecteuler.net/... et plus précisément, forum.projecteuler.net/viewtopic.php?f=50&t=1989
- Il n'a pas lu les forums... Devrais-je supprimer ce?
- Il n'est pas vraiment contre les règles... ce n'est pas sur le forum..
Vous devez vous connecter pour publier un commentaire.
Itération inverse n'est pas de trouver le plus grand
x*y
, il trouve le palindrome avec le plus grandx
. Il y a une plus grande réponse que 580085; il a une plus petitex
, mais un plus grandy
.Ce serait plus efficace de l'être écrite comme suit:
Vous trouverez
itertools
et des générateurs très utile si vous êtes en train de faire Euler en Python.Pas le plus efficace de réponse, mais je n'aime que c'est assez compact pour tenir sur une seule ligne.
Essayé de le rendre plus efficace, tout en restant lisible:
Ici, j'ai ajouté deux "pause" afin d'améliorer la vitesse de ce programme.
Simple:
Chaque fois qu'elle n'est pas à partir de 999, comme c'est déjà trouvé plus tôt.Ci-dessous est une méthode simple à l'aide de fonction de chaîne de trouver plus grand palindrome à l'aide de trois chiffres
Voici mon code pour résoudre ce problème.
580085 = 995 X 583, où 906609 = 993 X 913
trouvé seulement par l'application de force brute, de haut en bas!
Voici mon code Python:
Repenser: l'efficacité et la performance
palindrome...: 997799, 0.000138998031616 secs