Euler 4 (Python)

Este post fue migrado de un blog hecho con Wordpress. Si se ve mal, dejame un comentario y lo arreglo.

Enunciado 4

Un número palíndromo se lee igual en ambos sentidos. El mayor palíndromo construido a partir del producto de dos números de dos dígitos es 9009 = 91 × 99.

Encontrar el mayor palíndromo que se puede construir como el producto de dos números de tres dígitos.

Solución

La solución fue obtenida en el intérprete interactivo de Python 3.0rc1+. Necesitaba Python 3 para utilizar itertools.combinations:


juanjo@fenix:~$ python3

Python 3.0rc1+ (py3k, Oct 28 2008, 09:23:29) 

[GCC 4.3.2] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> from itertools import combinations

>>> tri = range(999, 99, -1)

>>> mults = []

>>> for a,b in combinations(tri, 2):

...     s = str(a*b)

...     if s == s[::-1]:

...             mults.append(int(s))

... 

>>> max(mults)

906609

Python tips

  • combinations genera la combinación con los elementos de la lista argumento tomados de a n, si se especifica el parámetro n.
  • En Python 3 print deja de ser una sentencia para convertirse en una función, por lo que siempre debe ser llamado con parámetros.
  • unString[::-1] es un idiom usado para invertir una cadena de texto (en el ejemplo, unString). Se lee: los elementos de unString, desde el principio al final, con paso -1.

Comentarios

Comments powered by Disqus