(за хората с четни факултетни номера)
Да се напише функция 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]