Добавить символ звездочки после каждого неотрицательного элемента списка - Lisp

  1. Не получается написать функцию, которая принимает на вход список, и преобразует его следующим образом: после каждого неотрицательного элемента добавляет звездочку. Например: исходный список: (0 b a -2 4) преобразованный список: ((0 *) b a -2 (4 *)) Помогите, пожалуйста!Добавлено через 22 минуты Ошибку выдает компилятор: sh-4.4$ clisp main.lisp *** - >: NIL is not a real number


textual

Код к задаче: «Добавить символ звездочки после каждого неотрицательного элемента списка - Lisp»

(defun f (lst)
  (cond ((null lst) nil)
        ((numberp (car lst)) 
         (cons (if (>= (car lst) 0) (list (car lst) '*) (car lst)) (f (cdr lst))))
        (t (cons (car lst) (f (cdr lst))))))
          
==> F
 
(f  '(0 b a -2 4))
 
==> ((0 *) B A -2 (4 *))

СДЕЛАЙТЕ РЕПОСТ

7   голосов, оценка 3.714 из 5



Похожие ответы
  1. Необходимо реализовать функцию (Add(символ1, символ2)), которая бы добавляла символу2 недостающие свойства символа1.

  1. Написать программу, которая в исходном списке заменяет все элементы-символы соответствующими им ASCII-кодами. Список может содержать подсписки произвольной глубины вложения.

  1. Привет, нужна помощь по Lisp Во входном файле записана символьная строка из двух слов, разделенных или одним пробелом, или несколькими. Считав эту фразу из файла, написать её в две строки и вывести в новый файл

  1. Получить из исходного списка требуемый символ или список, используя только функции CAR, CDR и CONS. Для выделения символов использовать либо полную запись функций CAR и CDR, либо сокращенную. Для формирования требуемых списков использовать функцию CONS. ((A) (B (C D) E (K L))) 1) символ С 2) символ (C D) 3) символ K 4) символ (A B C) 5) символ (E (K L)) 6) символ (B A K)

  1. Есть пакет org-drill для org-mode в emacs. Это пакет для создания и повторения используя метод "карточки". Когда карточек становится много имеет смысл их тегировать по темам. Ниже код приведен для изучения карточек с тегом EN, но проблема в том, что таких тегов может быть множество и писать для каждого тега свою функцию не удобно. Как можно создать функцию, которая при ее использование просила бы ввод с клавиатуры тега

  1. Здравствуйте! Вот такой парой функций считываю строки из файла в список:

  1. Запишите последовательность вызовов CAR и CDR, выделяющие из приведенных списков символ "а" (1(2((3 4(5(6 a))))))

  1. Добрый день! Имеем исходный список например: (a 1 b 2 c 3 d 4) нужно его разделить на два чтобы в первый список вошли только числа а во второй только символы. т. е. 1) (1 2 3 4) 2) (a b c d) Имею вот такие наработки:

  1. Из произвольного(с вложенностью) списка удалить все элементы, являющиеся числом или символом. То есть вывести элементы, являющиеся строками