Wprowadzenie i zaliczenie
Wszyscy znamy i kochamy nasze niesamowite zasady sprawdzania, czy liczbę można podzielić przez 11 lub 3, co jest po prostu sprytną sumą nad cyframi liczby. Teraz to wyzwanie przenosi to na nowy poziom, wymagając obliczenia sumy cyfr, a następnie sprawdzenia, czy wynikiem jest idealny kwadrat całkowity, przy czym żadnej z tych operacji zwykle nie można wykonać bardzo krótko. Ponieważ ta właściwość jest również bardzo trudna do zauważenia, gdy patrzymy na liczbę, chcemy, aby zrobiono to dla całych list liczb, abyśmy mogli uratować ludzką pracę. To jest teraz twoje wyzwanie!
To było zadanie na moim uniwersyteckim kursie programowania funkcjonalnego. To zadanie jest teraz zamknięte i zostało omówione na zajęciach i mam pozwolenie mojego profesora na opublikowanie go tutaj (wyraźnie poprosiłem).
Specyfikacja
Wkład
Twoje dane wejściowe to lista liczb całkowitych nieujemnych, w dowolnym standardowym formacie We / Wy.
Możesz wybrać format listy w zależności od potrzeb
Wydajność
Dane wyjściowe to lista liczb całkowitych w dowolnym standardowym formacie we / wy.
Co robić?
Odfiltruj każdą liczbę całkowitą z listy wejściowej, dla której suma cyfr nie jest kwadratem (liczby całkowitej).
Kolejność elementów nie może zostać zmieniona, np. Jeśli otrzymasz [1,5,9]
, możesz nie wrócić[9,1]
Potencjalne narożne skrzynki
0 jest nieujemną liczbą całkowitą, a zatem prawidłowym wejściem, a 0 jest również prawidłowym pierwiastkiem całkowitym, np. 0 liczy się jako liczba całkowita w kwadracie.
Pusta lista to także prawidłowe dane wejściowe i wyjściowe.
Kto wygrywa?
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach!
Oczywiście obowiązują standardowe zasady.
Przypadki testowe
[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] -> []
Przykład krok po kroku
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]