Funciones de Orden Superior

Una función se llama Función de Orden Superior si contiene otras funciones como parámetro o devuelve una función como resultado. Podemos pasar funciones como argumentos y también podemos devolver funciones. Todo esto hace que sea muy conveniente escribir código genérico que puede reutilizarse en múltiples lugares.
La función sort() o sorted(), por ejemplo, es una función de orden superior. Podemos pasarle un argumento llamado key, que se utilizará para determinar cómo se realiza la ordenación. Podemos tener una lista de tuplas y queremos ordenar la lista basándonos en la suma de los elementos de las 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)]
Aquí, hemos pasado una función lambda que toma un solo elemento como argumento y devuelve el valor según el cual se debe ordenar.
También podemos definir nuestra propia función de orden 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
La función do() tiene 3 argumentos: el primer número num1, el segundo número num2 y la operación que se necesita realizar en esos números. En la primera llamada, le decimos a la función que use la suma; en la segunda, que use la resta; y en la última, la multiplicación.

Reto

Dada una lista de n tríos de números, se te pide ordenar esos tríos por su suma. Así, en la lista final, si observamos la suma de los tríos, el resultado es una secuencia no decreciente.
La primera línea de la entrada contiene un solo entero n - el número de tríos. Las siguientes n líneas contienen 3 enteros separados por espacios.
El programa debe imprimir n líneas - la lista resultante de tríos. Cada línea debe contener 3 números separados por espacios. Si hay dos tríos con la misma suma, el primero que aparece en la entrada debe aparecer primero en la salida (las funciones sort y sorted mantienen ese orden - esto se llama ordenación estable).
Entrada
Salida
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