Ֆունկցիան կոչվում է Higher-Order, եթե այն որպես արգումենտ պարունակում է այլ ֆունկցիաներ կամ վերադարձնում է մեկ այլ ֆունկցիա։ Մենք կարող ենք ֆունկցիաները փոխանցել որպես արգումենտներ և կարող ենք նաև ֆունկցիաներ վերադարձնել։ Այս ամենը շատ հարմար է դարձնում կոդ գրելը, որը կարող ենք կիրառել բազմաթիվ այլ դեպքերում։
sort() կամ sorted() ֆունկցիան, օրինակ, higher-order ֆունկցիա է: Մենք կարող ենք դրան փոխանցել key կոչվող արգումենտը, որով կորոշվի, թե ինչպես է կատարվում տեսակավորումը: Ենթադրենք՝ ունենք tuple-ի ցուցակ, և ցանկանում ենք այն տեսակավորել՝ հիմնվելով tuple-ի տարրերի գումարի վրա.
do() ֆունկցիան ունի 3 արգումենտ՝ առաջին թիվը num1, երկրորդ թիվը num2 և ֆունկցիան, որը պետք է կատարվի այդ թվերի վրա։ Առաջին կանչում ֆունկցիային ասում ենք, որ օգտագործի գումարում, երկրորդում՝ հանում, իսկ վերջինում՝ բազմապատկում:
Առաջադրանք
Տրված է թվերի n եռյակների ցանկը։ Ձեզ խնդրում են դասավորել այդ եռյակները՝ ըստ իրենց գումարի: Այսպիսով, վերջնական ցուցակում, եթե նայենք եռյակների գումարին, պետք է ստացվի չնվազող հաջորդականություն։
Մուտքի առաջին տողը պարունակում է մեկ ամբողջ թիվ՝ n (եռյակների թիվը): Հաջորդ n տողերը պարունակում են բացատներով առանձնացված 3 ամբողջ թվեր։
Ծրագիրը պետք է տպի n տող՝ ստացված եռյակների ցանկը: Յուրաքանչյուր տող պետք է պարունակի 3 թիվ՝ առանձնացված բացատներով: Եթե կան նույն գումարով երկու եռյակներ, ապա մուտքագրման մեջ հանդիպող առաջին եռյակը պետք է ելքում առաջինը լինի (sort և sorted ֆունկցիաները պահպանում են այդ հերթականությունը. սա կոչվում է կայուն տեսակավորում կամ stable sorting):