Генерация всех перестановок заданного списка - Lisp

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

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

Помогите решить задачу: Написать программу, возвращающую список всех перестановок элементов данного списка по примеру:
Заданное выражение:
Описать функцию, возвращающую максимальную глубину списка.
РЕШЕНИЕ:
 
(defun depth (L)
    (labels
       ( ( depth-iter (L newL curDept cnt)
         (if (null L)
            (if (= cnt 0) curDepth
                (depth-iter newL () (+ curDepth 1) 0 ))
            (let ((fstL (car L)))
              (if (listp fstL)
                  (depth-iter (cdr  L)
                                  (append fstL newL)
                                  curDepth
                                  (+ 1 cnt))
                  (depth-iter (cdr L) newL curDepth cnt ))))) )
    (depth-iter L () 1 0 )))
(print (depth '( A B (C ((D E) F (G) H) I (J (K () L)))
                   (M (N ((O P ())) Q ((R) (S T))) (U ((V) W)))
                   ((X) ()) (((((() Y))))) )))
(print (depth '(() (()))))
(print (depth '(())))
(print (depth '()))
заранее спасибо

Решение задачи: «Генерация всех перестановок заданного списка»

textual
Листинг программы
"Masha ela kashu" [ blank? ] split-when all-permutations [ " " join capitalize1 ] map [ print ] each

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


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

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

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