Упражнение №3 на гр.2
Зад.0 [загрявка]. Напишете функциите accumulate и accumulate-i. Напишете и техните filter- варианти.
Зад.1. Да се напише функция (!! n), която изчислява n!! - произведението на всички числа, по-малки или равни на n, със същата четност: (!! 5) -> 15 ; =1*3*5 (!! 10) -> 3840 ; =2*4*6*8*10
Зад.2. Да се напише функция (nchk n k), която за дадени естествени числа n и k изчислява биномния коефициент 'n над k'. ; името идва от nchoosek - по колко начина можем да изберем k неща измежду n
Зад.3. Да се напише функцията nchk с едно извикване на accumulate.
Зад.4. Да се напише функция (2^ n), която изчислява 2n, използвайки: - accumulate - nchk от предишната задача
Зад.5. Да се напише функция (divisors-sum n), която намира сумата на всички делители на естественото число n.
Зад.6*. Да се напише горната функция по колкото може повече различни начини.
Зад.7. Да се напише функция (count p? a b), която проверява за колко измежду числата в целочисления интервал [a;b] е верен предиката p?.
Зад.8. Да се напишат функциите (all p? a b) и (any p? a b), който проверяват дали предикатът p? е верен съответно за всички или за някое естествено число в целочисления интервал [a;b].
Зад.9. Да се напише функция (prime? n), която проверява дали едно число е просто.
Зад.10. Да се напише функция от по-висок ред (constantly c), която по дадена константа c връща функцията f(x)=c: (define forever-21 (constantly 21)) (forever-21 5) -> 21 (forever-21 10) -> 21 ((constantly 21) 10) -> 21
Зад.11. Да се напише функция от по-висок ред (flip f), която приема двуместна функция като аргумент и връща същата функция, но с разменени места на нейните аргументи: (define f (flip -)) (f 4 10) -> 6 ; = (- 10 4) ((flip f) 4 10) -> -6
Зад.12. Да се напише функцията от по-висок ред (complement p), която по даден предикат връща неговото отрицание: (define (less-than-5? x) (< x 5)) (define f (complement less-than-5?)) (f 3) ; => #f (f 5) ; => #t (f 7) ; => #t
Последно модифициране: четвъртък, 18 октомври 2018, 14:41