Вариант А


Задача 1. Да се напише функция (meetTwice? f g a b), която проверява дали в целочисления интервал [a; b] съществуват две различни цели числа x и y такива, че f(x) = g(x) и f(y) = g(y).

Пример:(meetTwice? (lambda(x)x) (lambda(x) (- x)) -3 1) → #f

Пример:(meetTwice? (lambda(x)x) sqrt 0 5) → #t


Задача 2. Да се напише функция (maxDuplicate ll), която по списък от списъци от цели числа ll намира най-­голямото от тези числа, които се повтарят в рамките на списъка, в който се срещат. Ако в нито един списък няма повтарящи се числа, функцията да връща #f.

Пример: (maxDuplicate ‘((1 2 3 2) (-­4 -­4) (5))) → 2

Пример: (maxDuplicate ‘((1 2 3) (-­4 -­5 -6) ())) → #f


Задача 3. Да се напише функция (checkMatrix? m k) която проверява дали на всеки ред в дадена матрица m от цели числа има поне по едно число, кратно на k.

Пример:(checkMatrix? ‘((1 2 6) (3 8 9) (10 12 11)) 3) → #t

Пример:(checkMatrix? ‘((1 2 4) (3 8 9) (10 12 11)) 3) → #f


Задача 4. Да се напише функция (longestDescending­ l), която намира низходящо сортиран подсписък на списъка от числа l с максимална дължина. Ако съществуват няколко такива подсписъка, функцията да върне първия отляво надясно.

Упътване: Реализирайте помощна функция, която намира най-дългия низходящо сортиран префикс на даден списък.

Пример: (longestDescending­ ‘(5 3 8 6 4 2 6 7 1)) → (8 6 4 2)

Пример: (longestDescending­ ‘(1 2 3 4 5 6)) → (1)


Вариант Б


Задача 1. Да се напише функция (mixed? f g a b), която проверява дали в целочисления интервал [a; b] съществуват цели числа x и y такива, че f(x) < g(x), но f(y) > g(y).

Пример:(mixed? (lambda (x) x) (lambda (x) (- x)) -3 1) → #t

Пример:(mixed? sqrt exp 1 5) → #f


Задача 2. Да се напише функция (maxUnique ll), която по списък от списъци от цели числа намира най-голямото от тези от тях, които са уникални в рамките на списъка, в който се срещат. Ако в никой списък няма уникални числа, функцията да връща #f.

Пример: (maxUnique ((1 2 3 2) (5 5) (0))) → 3

Пример: (maxUnique ((1 2 1 2) (5 5) ())) → #f


Задача 3. Да се напише функция (checkMatrix? m k), която проверява дали e вярно, че няма ред в дадената матрица m, която да се състои само от делители на k.

Пример: (checkMatrix ‘((1 2 6) (3 8 9) (6 11 12)) 12) → #f

Пример: (checkMatrix ‘((1 2 7) (3 8 9) (6 11 12)) 12) → #t


Задача 4. Да се напише функция (longestAscending­ l), която намира възходящо сортиран подсписък на списъка от числа l с максимална дължина. Ако съществуват няколко такива подсписъка, функцията да върне първия отдясно наляво.

Упътване: Реализирайте помощна функция, която намира най-дългия възходящо сортиран префикс на даден списък.

Пример: (longestAscending­ ‘(5 3 8 6 4 2 6 7 1)) → (2 6 7)

Пример: (longestAscending­ ‘(6 5 4 3 2 1)) → (1)


Забележка: използването на всички стандартни функции в R5RS, както и на функциите accumulate, filter-accumulate, filter, foldr и foldl е позволено, но не е задължително.

Последно модифициране: петък, 11 ноември 2016, 15:46