Функцией высшего порядка называется функция, которая принимает другие функции в качестве параметра или возвращает функцию как результат. Мы можем передавать функции как аргументы, а также можем возвращать функции. Всё это делает очень удобным написание универсального кода, который можно использовать в разных местах.
Например, функция sort() или sorted() является функцией высшего порядка. Мы можем передать ей аргумент key, который будет использоваться для определения того, как выполняется сортировка. Представим, что у нас есть список кортежей, и мы хотим отсортировать его по сумме элементов кортежей:
Функция do() имеет 3 аргумента: первое число num1, второе число num2 и операцию, которую нужно выполнить над этими числами. В первом вызове мы указываем функции использовать сложение, во втором — вычитание, а в последнем — умножение.
Задание
Дан список из n троек чисел, требуется отсортировать эти тройки по их сумме. Таким образом, в итоговом списке, если посмотреть на суммы троек, получится неубывающая последовательность.
Первая строка ввода содержит одно целое число n — количество троек. Следующие n строк содержат 3 целых числа, разделённых пробелами.
Программа должна вывести n строк — результатирующий список троек. Каждая строка должна содержать 3 числа, разделённых пробелами. Если есть две тройки с одинаковой суммой, первая, появившаяся во входных данных, должна появиться первой в выводе (функции sort и sorted сохраняют этот порядок — это называется стабильной сортировкой).