Lisp программа
Формулировка задачи:
Привет всем!
Может быть кто-то может мне помочь?
Надо создать программу в Lisp которая меняет местами числа и впереди выставляет негативные а потом позитивные.
Например на вводе у меня 2 -3 4 -4 2 0 2 -3
А результат должен быть -3 -4 -3 2 4 2 0 2
Решение задачи: «Lisp программа»
textual
Листинг программы
(defun task (lst &optional (n nil) (np nil) (sym nil)) (cond ((null lst) (append (reverse n) (reverse np) (reverse sym))) ((symbolp (car lst)) (task (cdr lst) n np (cons (car lst) sym))) ((minusp (car lst)) (task (cdr lst) (cons (car lst) n) np sym)) (t (task (cdr lst) n (cons (car lst) np) sym))))
Объяснение кода листинга программы
В данном коде определена функция task, которая принимает четыре аргумента: lst, n, np, sym. Список lst представляет собой список, который необходимо обработать. n, np и sym — это результат обработки списка lst. Функция task возвращает список, полученный в результате обработки lst. Пример использования функции: (task (list 1 'a 'b 'c) '() '() '()) В данном примере на вход функции task передаётся список (1 'a 'b 'c), а также начальные значения для переменных n, np и sym, равные (). Далее в функции происходит проверка:
- Если список lst пуст, то в качестве результата возвращается список, полученный путём добавления элементов n, np и sym в обратном порядке.
- Если первый элемент списка lst является символом, то в качестве результата возвращается список, полученный путём вызова функции task для списка (cdr lst), при этом переменная sym заменяется на список, содержащий первый элемент списка lst, а переменные n и np заменяются на начальные значения.
- Если первый элемент списка lst является отрицательным числом, то в качестве результата возвращается список, полученный путём вызова функции task для списка (cdr lst), при этом переменная n заменяется на список, содержащий первый элемент списка lst, а переменные np и sym заменяются на начальные значения.
- Если первый элемент списка lst является числом или другим несимволическим значением, то в качестве результата возвращается список, полученный путём вызова функции task для списка (cdr lst), при этом переменная sym заменяется на список, содержащий первый элемент списка lst, а переменные n и np заменяются на результат вызова функции task для списка (cdr lst) с начальными значениями для переменных n, np и sym.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д