Проверка списка - Lisp

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

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

Помогите пожалуйста,есть список ,если в списках и подсписках содержится только числа,либо только символы то такой список возвращает-true Пример:
 (list 1 2 3 (4 5 6) (f g h))
Ответ: True Пример:
 (list 1 2 3 (4 5 4) (f g h) f k)
Ответ: False Пример:
(list 1 2 3 (4 5 k) (f g h))
Ответ: False Нельзя использовать lambda,apply,funcall.

Решение задачи: «Проверка списка»

textual
Листинг программы
(defun nuc (lst s n)
  (cond ((null lst) t)
        ((numberp (car lst)) (if (not s) (nuc (cdr lst) s t) nil))
        ((symbolp (car lst)) (if (not n) (nuc (cdr lst) t n) nil))
        ((or (is-sym-list (car lst)) (is-num-list (car lst))) (nuc (cdr lst) s n))
        (t nil)))
 
(defun task (lst)
   (nuc lst nil nil))

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

В коде представлена функция с именем nuc, которая принимает четыре аргумента: lst, s, n и t. Первые три аргумента являются необязательными, а четвертый — обязательным. Функция проверяет список на соответствие заданным условиям и возвращает true или false в зависимости от результата проверки. Постановка задачи: необходимо написать функцию nuc, которая проверяет список на соответствие следующим условиям:

  1. Если список пустой, то функция должна вернуть true.
  2. Если первый элемент списка является числом, то функция должна проверить второй аргумент s. Если s равно false, то функция должна вызвать себя для оставшейся части списка (cdr). Если s равно true, то функция должна вернуть false.
  3. Если первый элемент списка является символом, то функция должна проверить третий аргумент n. Если n равно false, то функция должна вызвать себя для оставшейся части списка (cdr). Если n равно true, то функция должна вернуть false.
  4. Если первый элемент списка является списком символов или чисел, то функция должна вызвать себя для оставшейся части списка (cdr).
  5. Если первый элемент списка не соответствует ни одному из вышеперечисленных условий, то функция должна вернуть false. Второй представлен фрагмент кода, который содержит функцию task, которая вызывает функцию nuc для списка lst с аргументами nil, nil, nil. Таким образом, задача кода состоит в проверке списка на соответствие заданным условиям.

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


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

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

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