Funções de Alta Ordem

Uma função é chamada de Função de Alta Ordem se ela recebe outras funções como parâmetro ou retorna uma função como resultado. Podemos passar funções como argumentos e também podemos retornar funções. Tudo isso torna muito conveniente escrever código genérico que pode ser reutilizado em diversos lugares.
A função sort() ou sorted(), por exemplo, é uma função de alta ordem. 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 gostaríamos de ordenar a 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.
Podemos definir nossa própria função de alta ordem também:
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() tem 3 argumentos: o primeiro número num1, o segundo número num2 e a operação que precisa ser realizada nesses números. Na primeira chamada, dizemos à função para usar a adição, na segunda para usar a subtração e na última a multiplicação.

Desafio

Dada uma lista de n trios de números, você deve ordenar esses trios pela soma de seus elementos. Assim, na lista final, se olharmos para a soma dos trios, o resultado é uma sequência não decrescente.
A primeira linha da entrada contém um único inteiro n — o número de trios. As próximas n linhas contêm 3 inteiros separados por espaço.
O programa deve imprimir n linhas — a lista resultante de trios. Cada linha deve conter 3 números separados por espaço. Se houver dois trios 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: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

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