紹介とクレジット
数字が11で割り切れるか3で割り切れるかをテストするための素晴らしいルールを知っていますが、これは数字の桁の賢い合計です。現在、この課題は、数字の合計を計算し、結果が完全な整数二乗であるかどうかを確認することを要求することにより、これを新しいレベルに引き上げます。このプロパティは、数値を見るときに非常にわかりにくいため、人間の作業を節約できるように、数値のリスト全体に対してこれを実行する必要があります。これがあなたの挑戦です!
これは私の大学の関数型プログラミングコースでの課題でした。この課題は現在クローズされており、クラスで議論されており、ここに投稿する教授の許可があります(明示的に尋ねました)。
仕様
入力
入力は、任意の標準I / O形式の非負整数のリストです。
言語で必要に応じてリスト形式を選択できます
出力
出力は、標準I / O形式の整数のリストです。
何をすべきか?
入力リストから、数字の合計が(整数の)正方形でないすべての整数をフィルターで除外します。
要素の順序は変更できません。たとえば、取得した[1,5,9]
場合は返されません[9,1]
潜在的なコーナーケース
0 は非負の整数であり、したがって有効な入力であり、0も有効な整数のルートです。たとえば、0は整数の2乗としてカウントされます。
空のリストも有効な入力および出力です。
誰が勝ちますか?
これはコードゴルフなので、バイト単位の最短回答が勝ちです!
もちろん、標準ルールが適用されます。
テストケース
[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]