Python-ի ներածություն

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: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

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