Funções de Ordem Superior

Uma função é chamada de função de ordem superior se ela recebe outras funções como parâmetros ou retorna uma função como resultado. Podemos passar funções como argumentos e também podemos retornar funções. Tudo isso torna muito prático escrever código genérico que pode ser reutilizado em vários lugares.
A função sort() ou sorted(), por exemplo, é uma função de ordem superior. Podemos passar um argumento chamado key para ela, que será usado para determinar como a ordenação é feita. Podemos ter uma lista de tuplas e queremos ordenar essa lista com base na soma dos elementos das tuplas:
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)]
Aqui, passamos uma função lambda que recebe um único elemento como argumento e retorna o valor pelo qual ele deve ser ordenado.
Também podemos definir nossa própria função de ordem superior:
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
A função do() possui 3 argumentos — o primeiro número num1, o segundo número num2 e a operação que deve ser realizada nesses números. Na primeira chamada, informamos à função para usar a adição; na segunda, a subtração; e na última, a multiplicação.

Desafio

Dada uma lista de n triplos de números, você deve ordenar esses triplos pela sua soma. Assim, na lista final, se olharmos para a soma dos triplos, o resultado é uma sequência não decrescente.
A primeira linha da entrada contém um único inteiro n — o número de triplos. As próximas n linhas contêm 3 inteiros separados por espaços.
O programa deve imprimir n linhas — a lista resultante de triplos. Cada linha deve conter 3 números separados por espaços. Se houver dois triplos com a mesma soma, o primeiro que aparece na entrada deve aparecer primeiro na saída (as funções sort e sorted mantêm essa ordem — isso é chamado de ordenação estável).
Entrada
Saída
3 10 4 0 12 1 1 6 7 8
10 4 0 12 1 1 6 7 8
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

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