Introducción y crédito
Todos conocemos y amamos nuestras increíbles reglas para probar si un número es divisible por 11 o 3, que es solo una suma inteligente sobre los dígitos del número. Ahora, este desafío lleva esto a un nuevo nivel, al exigirle que calcule la suma de los dígitos y luego verifique si el resultado es un cuadrado entero perfecto, ninguna de las cuales operaciones generalmente se pueden hacer muy cortas. Como esta propiedad también es muy difícil de ver cuando se mira un número, queremos que esto se haga para listas completas de números para que podamos ahorrar trabajo humano. ¡Así que este es tu desafío ahora!
Esta fue una tarea en el curso de programación funcional de mi universidad. Esta tarea ahora está cerrada y se ha discutido en clase y tengo el permiso de mi profesor para publicarla aquí (pregunté explícitamente).
Especificación
Entrada
Su entrada es una lista de enteros no negativos, en cualquier formato de E / S estándar.
Puede elegir el formato de lista según lo necesite su idioma
Salida
La salida es una lista de enteros, en cualquier formato de E / S estándar.
¿Qué hacer?
Filtre todos los enteros de la lista de entrada para los cuales la suma de los dígitos no es un cuadrado (de un entero).
El orden de los elementos no se puede cambiar, por ejemplo, si se obtiene [1,5,9]
puede no volver[9,1]
Posibles casos de esquina
0 es un número entero no negativo y, por lo tanto, una entrada válida y 0 también es una raíz entera válida, por ejemplo, 0 cuenta como un cuadrado entero.
La lista vacía es una entrada y salida válida también.
¿Quién gana?
Este es el código de golf, por lo que gana la respuesta más corta en bytes.
Se aplican reglas estándar, por supuesto.
Casos de prueba
[1,4,9,16,25,1111] -> [1,4,9,1111]
[1431,2,0,22,999999999] -> [1431,0,22,999999999]
[22228,4,113125,22345] -> [22228,4,22345]
[] -> []
[421337,99,123456789,1133557799] -> []
Ejemplo paso a paso
Example input: [1337,4444]
Handling first number:
Sum of the digits of 1337: 1+3+3+7=14
14 is not an integer square, thus will be dropped!
Handling second number:
Sum of the digits of 4444: 4+4+4+4=16
16 is an integer square because 4*4=16, can get into the output list!
Example output: [4444]