Зад.1 Да се напише функция (count-atoms lst), която намира броя на атомите в даден списък:
(count-atoms '(1 ((2 #f) "iei") (((5 (6 7)) "fp")) 9 () 11)) -> 11
Зад.2 Да се напише функция (flatten lst), която "изглажда" дълбокия списък lst:
(flatten '(1 ((2 #f) "iei") (((5 (6 7)) "fp")) 9 () 11)) -> (1 2 #f "iei" 5 6 7 "fp" 9 () 11)
Зад.3 Да се напише функция (sum-atoms lst), която намира сумата на всички атоми в даден дълбок списък:
(sum-atoms '(1 ((2 3) 4) (((5))) (6 7 8))) -> 36
Зад.4 Да се напише функция (deep-map func lst), която работи аналогично на стандартната map, но за атомите в списък с произволна дълбочина:
(deep-map integer? '(1 ((2 #f) "iei") (((5 (6 7)) "fp")) 9 () 11)) -> (#t ((#t #f) #f) (((#t (#t #t)) #f)) #t #f #t)
(deep-map (lambda (x) (+ x 1)) '(((1) (2 3)) 4 (5))) -> '(((2) (3 4)) 5 (6))
Зад.5 Да се напише следният интерфейс за двоично дърво:
  (make-tree node left right) - създаване на дърво по дадена стойност в корена и две поддървета
  (make-leaf node) - създаване на листо по дадена стойност в него
  (empty-tree? tree) - проверка дали дървото е празно
  (root tree) - селектор за стойността в корена на дървото
  (left tree) - селектор за лявото поддърво
  (right tree) - селектор за дясното поддърво
Зад.6 Да се напише функция (count-nodes tree), която брои колко върха има в дадено дърво.
Зад.7 Да се напише функция (tree-map func tree), която работи аналогично на стандартната map, но за всички стойности във върховете на дървото
Зад.8 Да се напише функция (height tree), която намира височината на дадено дърво.
Зад.9 Да се напише функция (tree-level tree), която намира списък от всички върхове на дадено дърво, намиращи се на дадено разстояние от корена му.
Зад.10 Да се напише функция (аll-levels tree), която връща списък от всички върхове на дадено дърво, подредени по нива от корена към листата
Зад.11 Да се напише функция (bst-insert x tree), която вмъква даден елемент в дадено двоично наредено дърво.
Last modified: Tuesday, 24 November 2015, 11:28 PM