Einführung und Kredit
Wir alle kennen und lieben unsere großartigen Regeln, um zu testen, ob eine Zahl durch 11 oder 3 teilbar ist. Dies ist nur eine clevere Summe über den Ziffern der Zahl. Diese Herausforderung bringt dies auf ein neues Niveau, indem Sie die Summe der Ziffern berechnen und dann prüfen müssen, ob das Ergebnis ein perfektes ganzzahliges Quadrat ist, wobei keine der beiden Operationen normalerweise sehr kurz ausgeführt werden kann. Da diese Eigenschaft auch bei der Betrachtung einer Zahl sehr schwer zu erkennen ist, möchten wir, dass dies für ganze Zahlenlisten durchgeführt wird, um menschliche Arbeit zu sparen. Das ist jetzt also Ihre Herausforderung!
Dies war eine Aufgabe in meinem Kurs für funktionale Programmierung an der Universität. Diese Aufgabe ist jetzt abgeschlossen und wurde im Unterricht besprochen. Ich habe die Erlaubnis meines Professors, sie hier zu posten (ich habe ausdrücklich darum gebeten).
Spezifikation
Eingang
Ihre Eingabe ist eine Liste nicht negativer Ganzzahlen in einem beliebigen Standard-E / A-Format.
Sie können das Listenformat so wählen, wie es Ihre Sprache benötigt
Ausgabe
Die Ausgabe ist eine Liste von Ganzzahlen in jedem Standard-E / A-Format.
Was ist zu tun?
Filtern Sie jede Ganzzahl aus der Eingabeliste heraus, für die die Summe der Ziffern kein Quadrat (einer Ganzzahl) ist.
Die Reihenfolge der Elemente darf nicht geändert werden, z. B. wenn Sie erhalten [1,5,9]
, können Sie nicht zurückkehren[9,1]
Mögliche Eckfälle
0 ist eine nicht negative Ganzzahl und somit eine gültige Eingabe, und 0 ist auch eine gültige Ganzzahlwurzel, z. B. zählt 0 als ganzzahliges Quadrat.
Die leere Liste ist auch eine gültige Eingabe und Ausgabe.
Wer gewinnt?
Das ist Code-Golf, also gewinnt die kürzeste Antwort in Bytes!
Es gelten selbstverständlich Standardregeln.
Testfälle
[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] -> []
Schritt-für-Schritt-Beispiel
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]