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, равные (). Далее в функции происходит проверка:

  1. Если список lst пуст, то в качестве результата возвращается список, полученный путём добавления элементов n, np и sym в обратном порядке.
  2. Если первый элемент списка lst является символом, то в качестве результата возвращается список, полученный путём вызова функции task для списка (cdr lst), при этом переменная sym заменяется на список, содержащий первый элемент списка lst, а переменные n и np заменяются на начальные значения.
  3. Если первый элемент списка lst является отрицательным числом, то в качестве результата возвращается список, полученный путём вызова функции task для списка (cdr lst), при этом переменная n заменяется на список, содержащий первый элемент списка lst, а переменные np и sym заменяются на начальные значения.
  4. Если первый элемент списка lst является числом или другим несимволическим значением, то в качестве результата возвращается список, полученный путём вызова функции task для списка (cdr lst), при этом переменная sym заменяется на список, содержащий первый элемент списка lst, а переменные n и np заменяются на результат вызова функции task для списка (cdr lst) с начальными значениями для переменных n, np и sym.

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


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

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

6   голосов , оценка 4 из 5