Introduzione e credito
Conosciamo tutti e amiamo le nostre fantastiche regole per testare se un numero è divisibile per 11 o 3, che è solo una somma intelligente sulle cifre del numero. Ora questa sfida porta questo a un nuovo livello, richiedendo di calcolare la somma delle cifre e quindi controllando se il risultato è un quadrato intero perfetto, nessuna delle quali operazioni di solito possono essere eseguite molto brevi. Poiché questa proprietà è anche molto difficile da vedere quando si guarda un numero, vogliamo che ciò avvenga per interi elenchi di numeri in modo da poter salvare il lavoro umano. Quindi questa è la tua sfida ora!
Questo è stato un incarico nel mio corso di programmazione funzionale all'università. Questo compito è ora chiuso ed è stato discusso in classe e ho il permesso del mio professore di pubblicarlo qui (ho chiesto esplicitamente).
specificazione
Ingresso
Il tuo input è un elenco di numeri interi non negativi, in qualsiasi formato I / O standard.
Puoi scegliere il formato dell'elenco secondo la tua lingua
Produzione
L'output è un elenco di numeri interi, in qualsiasi formato I / O standard.
Cosa fare?
Filtra ogni numero intero dall'elenco di input per il quale la somma delle cifre non è un quadrato (di un numero intero).
L'ordine degli elementi non può essere modificato, ad esempio, se si ottiene [1,5,9]
si può non tornare[9,1]
Casi d'angolo potenziali
0 è un numero intero non negativo e quindi un input valido e 0 è anche un numero intero valido, ad es. 0 conta come un numero intero.
L'elenco vuoto è anche un input e un output validi.
Chi vince?
Questo è code-golf quindi vince la risposta più breve in byte!
Ovviamente si applicano le regole standard.
Casi test
[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] -> []
Esempio passo-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]