viernes, 5 de octubre de 2012

Los números vampiros

En la página Didáctica Especializada encontramos el siguiente acertijo:

Los números vampiros son números que cumplen estas reglas:
  • Tienen un número par de cifras.
  • Las cifras se pueden reordenar para formar dos números igual de largos, que multiplicados dan el número original.
Los dos números cortos se llaman los colmillos del vampiro y no pueden terminar los dos en 0.
Por ejemplo, 1435 es un número vampiro y sus colmillos son 35 y 41. ¿Por qué? Pues porque 35×41=1435.

Para resolver el problema con Mathematica, comenzamos por definir una función que producirá un texto del tipo 35x41 = 1435 cuando encontremos esa solución:
TextoSalida[{m_, n_}] :=
 ToString[m] <> " x " <> ToString[n] <> " = " <>  ToString[m n] 

A continuación definimos una función que obtendrá todos los números vampiros entre un valor inicial y un valor final: BuscarVampiros[inicio_, final_] := Module[ {lista, n, digits, factors, sol}, lista={}; For[n=inicio, n < final, n++, digits=IntegerDigits[n]; factors=Map[ Map[FromDigits,#]&, Map[Partition[#,{Length[digits] / 2}]&, Permutations[digits]]]; sols=Select[factors,Apply[Times, #]==n&]; If[sols!={},lista=Append[lista,sols[[1]]]]; ]; Map[TextoSalida,lista] // ColumnForm ] Ahora podemos buscar los números vampiros de cuatro cifras: BuscarVampiros[1000,9999] 21 x 60 = 1260 15 x 93 = 1395 41 x 35 = 1435 51 x 30 = 1530 87 x 21 = 1827 27 x 81 = 2187 86 x 80 = 6880

No hay comentarios:

Publicar un comentario