Зад.1 Да се напише функция (elem? el lst), която проверява дали даден обект се среща в списък:
(elem? 3 '(1 2 3 4 5)) -> #t (elem? "oops" '(1 2 3 4 5)) -> #f
Зад.2 Да се напише функция (my-reverse lst), която обръща даден списък:
(my-reverse '(1 2 3 4 5)) -> (5 4 3 2 1)
Зад.3 Да се напише функция (remove-first el lst), която премахва първото срещане на даден елемент от списък:
(remove-first 2 '(1 2 3 4 1 2 3 4 5)) -> (1 3 4 1 2 3 4 5)
Зад.4 Да се напише функция (remove-all el lst), която премахва всички срещания на даден елемент от даден списък:
(remove-all 2 '(1 2 3 4 1 2 3 4 5)) -> (1 3 4 1 3 4 5)
Зад.5 Да се напишат функциите от по-висок ред (map func lst) и (filter pred? lst):
(map (lambda (x) (* x 2)) '(1 2 3)) -> (2 4 6)
(map prime? '(5 1 3 2 4)) -> (#t #f #t #t #f)
(filter even? '(1 2 3 4 5)) -> (2 4)
(filter prime? '(1 2 3 4 5)) -> (2 3 5)
(filter (lambda (x) (and (prime? x) (odd? x))) '(1 2 3 4 5)) -> (3 5)
Зад.6 Да се напише функция (extract-ints lst), която взема списък с произволни обекти и връща списък, съставен само от числата в него:
(extract-ints '(1 2 #t "Hello" (3 "no") #f 4 (5))) -> (1 2 4)
Зад.7 Нека lst е списък от списъци с естествени числа. Да се напише функция (sum-of-sums lst), намира сумата на всички естествени числа във всички списъци:
(sum-of-sums '((1 2 3) (4) () (5 6) (7 8 9 10))) -> 55
Last modified: Wednesday, 4 November 2015, 2:02 PM