Introdução e Crédito
Todos conhecemos e amamos nossas regras impressionantes para testar se um número é divisível por 11 ou 3, o que é apenas uma soma inteligente sobre os dígitos do número. Agora, esse desafio leva isso a um novo nível, exigindo que você calcule a soma dos dígitos e, em seguida, verifique se o resultado é um quadrado inteiro perfeito, e nenhuma das operações geralmente pode ser realizada com muito pouco tempo. Como essa propriedade também é muito difícil de ver quando se olha para um número, queremos que isso seja feito para listas inteiras de números, para que possamos salvar o trabalho humano. Portanto, este é o seu desafio agora!
Esta foi uma tarefa no meu curso de programação funcional da universidade. Esta tarefa está encerrada e foi discutida em sala de aula e tenho a permissão do meu professor para publicá-la aqui (perguntei explicitamente).
Especificação
Entrada
Sua entrada é uma lista de números inteiros não negativos, em qualquer formato de E / S padrão.
Você pode escolher o formato da lista conforme seu idioma precisar
Saída
A saída é uma lista de números inteiros, em qualquer formato de E / S padrão.
O que fazer?
Filtre todos os números inteiros da lista de entrada para os quais a soma dos dígitos não é um quadrado (de um número inteiro).
A ordem dos elementos não podem ser alterados, por exemplo, se você conseguir [1,5,9]
você pode não retornar[9,1]
Casos de canto em potencial
0 é um número inteiro não negativo e, portanto, uma entrada válida e 0 também é uma raiz inteira válida, por exemplo, 0 conta como um quadrado inteiro.
A lista vazia também é uma entrada e saída válida.
Quem ganha?
Isso é código-golfe, então a resposta mais curta em bytes vence!
Regras padrão se aplicam, é claro.
Casos de teste
[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] -> []
Exemplo passo a passo
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]