Зад.1. [Scheme или Haskell] Да се напишат следните функции:
- count x lst - намира броя срещания на елемента x в списъка lst
- remove x lst - премахва всички срещания на елемента x от списъка lst
- histogram lst - изгражда списък от наредени двойки с всеки един елемент и честотата му на срещане в списъка:
histogram [1,2,3,3,2,1,4,5,2] -> [(1,2), (2,3), (3,2), (4,1), (5,1)]
Зад.2. [Scheme или Haskell] Да се напише функция maxRepeated, която изчислява дължината на най-дългия подсписък от еднакви елементи в даден списък:
(maxRepeated '(1 1 2 2 2 2 3 2 1 1 1 2)) -> 4   ; тук най-дългият подсписък е подчертан
Упътване: напишете помощна функция, която изчислява колко пъти се повтаря последователно главата на даден списък.
Зад.3. [Haskell] Нека имаме дефиниран type Point = (Double, Double) - точки в равнината с реални координати. Да се напише функция maxDistance, която намира максималното декартово разстояние между някои две точки от даден списък:
maxDistance [(-1.1, 1), (1.8, 2), (3, 1), (-1, -2)] -> 5 Бонус: да се напише версия на тази функция, която приема за аргумент и функция за разстояние между две точки - напр. декартово, манхатъново, шахматно и т.н.
Зад.4. [Scheme] Да се напише функция maxSumPath, която приема за аргумент двоично дърво с числа във възлите и намира максималната сума на числата по някой път от корен до листо.
Last modified: Wednesday, 20 January 2016, 1:40 AM