Зад.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