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

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

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

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

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

textual
Листинг программы
  1. (defun task (lst)
  2.   (append (list (remove-if (lambda (x) (>= x 0)) lst))
  3.           (list (remove-if (lambda (x) (<= x 0)) lst))))
  4.  
  5. ==> TASK
  6.  
  7. (task '(2 1 -5 5 -2 0 -9))
  8.  
  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы