Функции высшего порядка

Функцией высшего порядка называется функция, которая принимает другие функции в качестве параметра или возвращает функцию как результат. Мы можем передавать функции как аргументы, а также можем возвращать функции. Всё это делает очень удобным написание универсального кода, который можно использовать в разных местах.
Например, функция sort() или sorted() является функцией высшего порядка. Мы можем передать ей аргумент key, который будет использоваться для определения того, как выполняется сортировка. Представим, что у нас есть список кортежей, и мы хотим отсортировать его по сумме элементов кортежей:
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)]
Здесь мы передали lambda-функцию, которая принимает один элемент в качестве аргумента и возвращает значение, по которому нужно сортировать.
Мы также можем определить собственную функцию высшего порядка:
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
Функция do() имеет 3 аргумента: первое число num1, второе число num2 и операцию, которую нужно выполнить над этими числами. В первом вызове мы указываем функции использовать сложение, во втором — вычитание, а в последнем — умножение.

Задание

Дан список из n троек чисел, требуется отсортировать эти тройки по их сумме. Таким образом, в итоговом списке, если посмотреть на суммы троек, получится неубывающая последовательность.
Первая строка ввода содержит одно целое число n — количество троек. Следующие n строк содержат 3 целых числа, разделённых пробелами.
Программа должна вывести n строк — результатирующий список троек. Каждая строка должна содержать 3 числа, разделённых пробелами. Если есть две тройки с одинаковой суммой, первая, появившаяся во входных данных, должна появиться первой в выводе (функции sort и sorted сохраняют этот порядок — это называется стабильной сортировкой).
Ввод
Вывод
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