Написать программу, которая определяет, сколько различных вариантов очереди могут образовать люди. - Lisp
Формулировка задачи:
К театральной кассе направляются n человек. Написать программу, которая определяет, сколько различных вариантов очереди могут образовать эти люди.
Буду очень признательна, если кто-то поможет решить!
Решение задачи: «Написать программу, которая определяет, сколько различных вариантов очереди могут образовать люди.»
textual
Листинг программы
(defun permutate (w) (when w (if (cdr w) (loop for a in w nconc (mapcar #'(lambda (e) (cons a e)) (permutate (remove a w)))) (list w)))) > (permutate '(1 2 3)) ((1 2 3) (1 3 2) (2 1 3) (2 3 1) (3 1 2) (3 2 1))
Объяснение кода листинга программы
В коде определена функция PERMUTE, которая принимает в качестве аргумента W список элементов. Если W не равен NIL, то рекурсивно вызывается функция PERMUTE для каждого элемента списка W, и каждый раз к результату добавляется новый элемент. Если W равен NIL, то возвращается список W. Код выполняет перебор всех возможных вариантов перестановки элементов в списке W и выводит каждый вариант в консоль.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д