Глубина последнего вхождения элемента Y, удовлетворяющего некоторому предикату P, в список W - Lisp
Формулировка задачи:
Напишите функцию, определяющую глубину последнего вхождения элемента Y, удовлетворяющего некоторому предикату P, в список W.
Есть написанная программа. Помогите пожалуйста глупой девушке понять как проверить ее работоспособность. Т.е. как задавать предикаты, у меня XLisp. Очень буду благодарна за помощь!
Листинг программы
- (defun maxDepth1 (f s g) ; вызов для: предикат f, список s, текущая глубина g
- (cond ((null s) 0) ; если список пустой – глубина 0
- ((listp (first s)) (max ;если первый элемент список – то максимум из
- (maxDepth1 f (rest s) g) ; глубины вхождения в этот спсок (maxDepth1 f (first s) (+ 1 g)); и хвоста
- )
- )
- ((funcall f (first s)) (max g ;если элемент не список и пердикат выполняется
- (maxDepth1 f (rest s) g) ; то максимум из текущей глубины и хвоста
- )
- )
- (t (maxDepth1 f (rest s) g)) ;иначе глубина вхождения для хвоста
- )
- )
- (defun maxDepth (p w) ;предикат для вызова
- (maxDepth1 p w 0) ;задаем начальную глубину = 0
- )
Решение задачи: «Глубина последнего вхождения элемента Y, удовлетворяющего некоторому предикату P, в список W»
textual
Листинг программы
- (maxDepth #'(lambda (x) (zerop (rem x 3)) Список) ;; поиск кратного трем
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д