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