Higher-Order ֆունկցիաներ

Ֆունկցիան կոչվում է Higher-Order, եթե այն որպես արգումենտ պարունակում է այլ ֆունկցիաներ կամ վերադարձնում է մեկ այլ ֆունկցիա։ Մենք կարող ենք ֆունկցիաները փոխանցել որպես արգումենտներ և կարող ենք նաև ֆունկցիաներ վերադարձնել։ Այս ամենը շատ հարմար է դարձնում կոդ գրելը, որը կարող ենք կիրառել բազմաթիվ այլ դեպքերում։
sort() կամ sorted() ֆունկցիան, օրինակ, higher-order ֆունկցիա է: Մենք կարող ենք դրան փոխանցել key կոչվող արգումենտը, որով կորոշվի, թե ինչպես է կատարվում տեսակավորումը: Ենթադրենք՝ ունենք tuple-ի ցուցակ, և ցանկանում ենք այն տեսակավորել՝ հիմնվելով tuple-ի տարրերի գումարի վրա.
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 ֆունկցիա, որն ընդունում է մեկ տարր որպես արգումենտ և վերադարձնում է այն արժեքը, ըստ որի այն պետք է տեսակավորվի:
Մենք կարող ենք նաև սահմանել մեր սեփական higher-order ֆունկցիան.
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 ֆունկցիաները պահպանում են այդ հերթականությունը. սա կոչվում է կայուն տեսակավորում կամ stable sorting):
Մուտք
Ելք
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