Генерация всех перестановок заданного списка - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д