Números N cuyos cuadrados tienen dos copias de cada dígito de N
La sucesión A114258 de la OEIS está formada por los números n tales que el número de ocurrencia de cada dígito d de n en n² es el doble del número de ocurrencia de d en n. Por ejemplo, 72576 es un elemento de A114258 porque tiene un 2, un 5, un 6 y dos 7 y su cuadrado es 5267275776 que tiene exactamente dos 2, dos 5, dos 6 y cuatro 7.
Un número es especial si pertenece a la sucesión A114258.
Definir la sucesión
1 |
especiales :: [Integer] |
cuyos elementos son los números especiales. Por ejemplo,
1 |
take 5 especiales == [72576,406512,415278,494462,603297] |
Soluciones
1 2 3 4 5 6 7 8 |
import Data.List (sort) especiales :: [Integer] especiales = filter especial [1..] especial :: Integer -> Bool especial x = sort (ys ++ ys) == sort (show (x^2)) where ys = show x |
En Maxima
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
especiales (n) := block ([k:0, r:[], i:1], while k < n do ( if especial (i) then (r : cons (i,r), k : k+1), i : i+1), reverse (r))$ especial (n) := block([ys], ys : string(n), is (ssort (sconcat(ys,ys)) = ssort (string (n^2))))$ /* (%i15) showtime : true$ Evaluation took 0.0000 seconds (0.0000 elapsed) (%i16) especiales (5); Evaluation took 29.4800 seconds (29.5400 elapsed) (%o16) [72576, 406512, 415278, 494462, 603297] */ |
La función doblesCifras puede simplificarse (no es necesario group):
En Maxima