Отдельный список отрицательных и положительных - Lisp

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

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

Добрый вечер, дали задачу: "Вывести в виде отдельных списков положительные и отрицательные элементы заданного списка. ’(2 1 –5 5 –2 0 –9) результатом будет два списка: ’(2 1 5) и ’( –5 –2 –9)". Не пойму как можно записать в отдельных 2 списка. Делал в racket
(define (plus_minus)
  
  (for/list
      ([i '(2 1 -5 5 -2 0 -9)])
    (if (< i 0)
          ;Записать в отрицательный список
     if (> i 0)
          ;Записать в положительный список
     
          "I dont know"))))

Решение задачи: «Отдельный список отрицательных и положительных»

textual
Листинг программы
(defun task (lst)
  (append (list (remove-if (lambda (x) (>= x 0)) lst))
          (list (remove-if (lambda (x) (<= x 0)) lst))))
 
==> TASK
 
(task '(2 1 -5 5 -2 0 -9))
 
==> ((-5 -2 -9) (2 1 5))

Объяснение кода листинга программы

В данном коде определена функция с именем task, которая принимает в качестве аргумента список lst. Внутри функции происходит удаление из списка всех элементов, которые больше или равны нулю, и объединение полученного списка с исходным списком lst. Результатом выполнения функции будет список, состоящий из двух частей: в первой части будут все элементы исходного списка, удовлетворяющие условию (>= x 0), во второй части — все элементы, удовлетворяющие условию (<= x 0). В данном примере функция task применяется к списку '(2 1 -5 5 -2 0 -9). Первая часть результата будет состоять из элементов (2 1 5), так как они больше нуля. Вторая часть будет состоять из элементов (-5 -2 -9), так как они меньше или равны нулю. Итоговый результат будет выглядеть так: ((-5 -2 -9) (2 1 5)).

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


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

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

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