Funktionen höherer Ordnung

Eine Funktion wird als Funktion höherer Ordnung bezeichnet, wenn sie andere Funktionen als Parameter enthält oder eine Funktion als Ausgabe zurückgibt. Wir können Funktionen als Argumente übergeben und auch Funktionen zurückgeben. All dies macht es sehr bequem, generischen Code zu schreiben, der an mehreren Stellen wiederverwendet werden kann.
Die Funktionen sort() oder sorted() sind zum Beispiel Funktionen höherer Ordnung. Wir können ihnen ein Argument namens key übergeben, das verwendet wird, um zu bestimmen, wie die Sortierung erfolgt. Wir können eine Liste von Tupeln haben und möchten die Liste basierend auf der Summe der Elemente der Tupel sortieren:
items = [(3, 6), (1, 8), (4, 4), (6, 1)]
items.sort(key=lambda x: x[0] + x[1])
print(items)
# [(6, 1), (4, 4), (3, 6), (1, 8)]
Hier haben wir eine Lambda-Funktion übergeben, die ein einzelnes Element als Argument nimmt und den Wert zurückgibt, nach dem sortiert werden soll.
Wir können auch unsere eigene Funktion höherer Ordnung definieren:
def do(num1, num2, operation):
    res = operation(num1, num2)
    print(num1, num2, res)

do(2, 3, lambda x, y: x + y)    # 2 3 5
do(2, 3, lambda x, y: x - y)    # 2 3 -1
do(2, 3, lambda x, y: x * y)    # 2 3 6
Die Funktion do() hat 3 Argumente - die erste Zahl num1, die zweite Zahl num2 und die Operation, die auf diesen Zahlen ausgeführt werden soll. Beim ersten Aufruf sagen wir der Funktion, dass sie die Addition verwenden soll, beim zweiten die Subtraktion und beim letzten die Multiplikation.

Herausforderung

Gegeben ist eine Liste von n Tripeln von Zahlen, und Sie sollen diese Tripel nach ihrer Summe sortieren. In der endgültigen Liste ergibt die Summe der Tripel also eine nicht abfallende Sequenz.
Die erste Zeile der Eingabe enthält eine einzelne ganze Zahl n - die Anzahl der Tripel. Die nächsten n Zeilen enthalten jeweils 3 durch Leerzeichen getrennte ganze Zahlen.
Das Programm sollte n Zeilen ausgeben - die resultierende Liste der Tripel. Jede Zeile sollte 3 durch Leerzeichen getrennte Zahlen enthalten. Wenn es zwei Tripel mit derselben Summe gibt, sollte das zuerst in der Eingabe erscheinende zuerst in der Ausgabe erscheinen (sort und sorted Funktionen behalten diese Reihenfolge bei - dies nennt man stabile Sortierung).
Eingabe
Ausgabe
3 10 4 0 12 1 1 6 7 8
10 4 0 12 1 1 6 7 8
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue