Skip to content

Latest commit

 

History

History

04

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Първи вариант

(за хората с четни факултетни номера)

Да се напише функция merge l, която взима списък от сортирани във възходящ ред списъци и връща списък от техните елементи сортирани в низходящ ред.

За да вземете последния елемент на списък можете да ползвате last l. За да вземете всички без последния елемент можете да вземете init l. За да обърнете списък наобратно можете да ползвате reverse l.

Hint: Първо напишете функция (напр. mergeTwo), която слива само два сортирани списъка. После в merge можете да я приложите за целия списък от списъци l с foldl, като на всяка стъпка сливате резултата с текущия списък. На някои места ще трябва да обръщате списъците.

Пример

merge [[1, 2, 3], [2, 3, 4], [7, 8, 9], [1, 2, 5]] -> [9, 8, 7, 5, 4, 3, 3, 2, 2, 2, 1, 1]

Втори вариант

(за хората с нечетни факултетни номера)

Да се напише функция merge l, която взима списък от сортирани в низходящ ред списъци и връща списък от техните елементи сортирани във възходящ ред.

За да вземете последния елемент на списък можете да ползвате last l. За да вземете всички без последния елемент можете да вземете init l. За да обърнете списък наобратно можете да ползвате reverse l.

Hint: Първо напишете функция (напр. mergeTwo), която слива само два сортирани списъка. После в merge можете да я приложите за целия списък от списъци l с foldl, като на всяка стъпка сливате резултата с текущия списък. На някои места ще трябва да обръщате списъците.

Пример

merge [[3, 2, 1], [4, 3, 2], [9, 8, 7], [5, 2, 1]] -> [1, 1, 2, 2, 2, 3, 3, 4, 5, 7, 8, 9]