Глубина последнего вхождения элемента Y, удовлетворяющего некоторому предикату P, в список W - Lisp

Узнай цену своей работы

Формулировка задачи:

Напишите функцию, определяющую глубину последнего вхождения элемента Y, удовлетворяющего некоторому предикату P, в список W.
(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
)
Есть написанная программа. Помогите пожалуйста глупой девушке понять как проверить ее работоспособность. Т.е. как задавать предикаты, у меня XLisp. Очень буду благодарна за помощь!

Решение задачи: «Глубина последнего вхождения элемента Y, удовлетворяющего некоторому предикату P, в список W»

textual
Листинг программы
(maxDepth #'(lambda (x) (zerop (rem x 3)) Список) ;; поиск кратного трем

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы