Введение и кредит
Мы все знаем и любим наши замечательные правила, чтобы проверить, делится ли число на 11 или 3, что является просто некоторой умной суммой по цифрам числа. Теперь этот вызов выводит это на новый уровень, требуя, чтобы вы вычислили сумму цифр, а затем проверили, является ли результат идеальным целочисленным квадратом, и ни одна из этих операций обычно не может быть выполнена очень короткой. Так как это свойство также очень трудно увидеть при просмотре числа, мы хотим, чтобы это было сделано для целых списков чисел, чтобы мы могли сохранить человеческую работу. Так что это ваша задача сейчас!
Это было задание на моем курсе функционального программирования в университете. Это задание теперь закрыто и обсуждалось в классе, и у меня есть разрешение моего профессора опубликовать его здесь (я спросил явно).
Спецификация
вход
Ваш ввод - это список неотрицательных целых чисел в любом стандартном формате ввода / вывода.
Вы можете выбрать формат списка, так как это нужно вашему языку
Выход
Вывод представляет собой список целых чисел в любом стандартном формате ввода / вывода.
Что делать?
Отфильтруйте каждое целое число из списка ввода, для которого сумма цифр не является квадратом (целого числа).
Порядок элементов не может быть изменен, например, если вы получите, [1,5,9]
вы не можете вернуться[9,1]
Потенциальные угловые случаи
0 является неотрицательным целым числом и, следовательно, допустимым входным значением, а 0 также является действительным целочисленным корнем, например, 0 считается целочисленным квадратом.
Пустой список также является допустимым входом и выходом.
Кто выигрывает?
Это код-гольф, поэтому выигрывает самый короткий ответ в байтах!
Стандартные правила применяются конечно.
Тестовые случаи
[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] -> []
Пошаговый пример
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]