Saltar al contenido

palíndromo más alto con números de 3 dígitos en python

Esta es la contestación más acertada que encomtrarás brindar, pero obsérvala pausadamente y valora si se adapta a tu proyecto.

Solución:

Iterando a la inversa no encuentra el más grande x*y, encuentra el palíndromo de mayor x. Hay una respuesta mayor que 580085; tiene una mas pequeña x pero mas grande y.

Esto se escribiría más eficientemente como:

from itertools import product

def is_palindrome(num):
    return str(num) == str(num)[::-1]

multiples = ( (a, b) for a, b in product(xrange(100,999), repeat=2) if is_palindrome(a*b) )
print max(multiples, key=lambda (a,b): a*b)
# (913, 993)

Encontrarás itertools y generadores muy útiles si estás haciendo Euler en Python.

No es la respuesta más eficiente, pero me gusta que sea lo suficientemente compacto como para caber en una línea.

print max(i*j for i in xrange(1,1000) for j in xrange(1,1000) if str(i*j) == str(i*j)[::-1])

Tienes la opción de avalar nuestra investigación poniendo un comentario o dejando una valoración te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *