Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
3 / 3 / 1
Регистрация: 21.10.2015
Сообщений: 92

Проверка "состава" списка XLisp

29.11.2015, 14:33. Показов 4983. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо проверить является ли список списком чисел или нет.
Lisp
1
2
3
4
5
6
7
(defun list-check (list)
    (cond
        ((null list) "Yes")
        ((numberp (car list)) (list-check (cdr list)))
        ((not (numberp (car list))) "No")
    )
)
Как "оптимизировать" эту функцию,чтобы она работала и со вложенными списками?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2015, 14:33
Ответы с готовыми решениями:

Реверс произвольного списка, включая подсписки (XLisp)
Здравствуйте! Поставлена следующая задача: Реверсировать произвольный список (включая подсписки). Вот решение: (defun ddin (h n) ...

Построение списка из элементов, встречающихся в списке n раз (XLisp)
Определите функцию, зависящую от двух аргументов u и n, которая по данному списку строит список его элементов, встречающихся в нем не менее...

Проверка состава оборудования в С++
a. Задание: Определить конфигурацию оборудования (запоминающие устройства, устройства ввода/вывода) b. Рекомендации i. Использовать...

8
 Аватар для vlisp
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
29.11.2015, 15:26
Лучший ответ Сообщение было отмечено Virviglaz как решение

Решение

Lisp
1
2
3
4
5
6
(defun list-check (lst)
  (cond
    ( (atom lst)(numberp lst))
    ( (null (cdr lst)) (list-check (car lst)))
    (T(and (list-check (car lst))
           (list-check (cdr lst))))))
2
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
29.11.2015, 15:44
Похоже на индусятину, в которой для работы с логическими значениями их преобразуют в строку и смотрят длину (4 ~ true, 5 ~ false). В CL «истина» — это T, «ложь» — NIL.

Цитата Сообщение от Virviglaz Посмотреть сообщение
Как "оптимизировать" эту функцию,чтобы она работала и со вложенными списками?
Если list — пустой список, вернуть истину. Если list — непустой список, вернуть истину в том случае, когда: 1) голова списка — число или список, состоящий из чисел (рекурсия) и 2) хвост списка состоит из чисел (рекурсия). Голова списка — first, хвост — rest, логическое «и» — and, логические «или» — or.
2
 Аватар для vlisp
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
29.11.2015, 16:07
Цитата Сообщение от helter Посмотреть сообщение
Если list — пустой список, вернуть истину.
ложь - в пустом списке нет ни одного числа, поэтому нельзя назвать его списком чисел. это довольно распространенная ошибка.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
29.11.2015, 17:05
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun is-numlist (lst)
  (cond ((null lst) t)
        ((numberp (car lst)) (is-numlist (cdr lst)))
        (t nil)))  
 
==> is-numlist
 
(is-numlist '(1 2 3))
 
==> T
 
(is-numlist '(1 2 a 3))
 
==> NIL
Цитата Сообщение от vlisp Посмотреть сообщение
ложь - в пустом списке нет ни одного числа, поэтому нельзя назвать его списком чисел. это довольно распространенная ошибка.
- нет. По той же причине, по которой 0!=1

Добавлено через 23 минуты
Для многоуровневых:


Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(defun is-numlist (lst)
  (cond ((null lst) t)
        ((listp (car lst)) (and (is-numlist (car lst)) (is-numlist (cdr lst)))) 
        ((numberp (car lst)) (is-numlist (cdr lst)))
        (t nil)))  
 
==> is-numlist
 
(is-numlist '(1 2 a 3))
 
==> NIL
 
(is-numlist '(1 2 12 3))
 
==> T
 
(is-numlist '(1 (2 12) 3))
 
==> T
1
29.11.2015, 18:52

Не по теме:

Цитата Сообщение от vlisp Посмотреть сообщение
ложь - в пустом списке нет ни одного числа, поэтому нельзя назвать его списком чисел. это довольно распространенная ошибка.
- алло, дорогая, если уже купила машину - будь осторожнее на дороге, в новостях передают что один идиот едет по встречной!
- один!? Да тут их сотни!

0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
29.11.2015, 19:01
Цитата Сообщение от vlisp Посмотреть сообщение
ложь - в пустом списке нет ни одного числа, поэтому нельзя назвать его списком чисел. это довольно распространенная ошибка.
Уравнение с параметром
Там ещё есть ссылка на википедию.
0
 Аватар для vlisp
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
30.11.2015, 01:32
Цитата Сообщение от helter Посмотреть сообщение
Там ещё есть ссылка на википедию.
Давайте так, есть некоторая функция, генерирующая рандомный список, есть вспомогательная функция, проверяющая полученный список, и наконец есть третья функция, рандомно выдергивающая элементы списка и проводящая с ними некие манипуляции. Если первая функция возвращает nil, а вторая функция возвращает T, то что делать третьей функции? Проверять список на пустоту. Каждая такая проверка - потеря времени, а без нее, система просто упадет. Элементарный пример - точка, вы не выбрали точку, а функция рисования круга вызвала обработчик ошибки, который удалил все, что вы сделали, в вашем чертеже... и вот вы сидите и моргаете, мол, как же так? вроде ж проверили все: тип - список и все элементы - числа... впрочем это все спекуляции на определениях
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
30.11.2015, 02:56
Напишите другую вторую функцию, у которой в спецификации будет в явном виде прописано: возвращает T, если список непустой и его элементы удовлетворяют свойствам бла-бла. А по умолчанию лучше придерживаться логики и общепринятой терминологии.

Добавлено через 1 минуту
Цитата Сообщение от vlisp Посмотреть сообщение
вот вы сидите и моргаете, мол, как же так? вроде ж проверили все: тип - список и все элементы - числа...
Если я с логикой не знаком, то да, у меня проблемы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2015, 02:56
Помогаю со студенческими работами здесь

Проверка состава, состояния и настроек рабочего компьютера.
Проверка состава, состояния и настроек рабочего компьютера. Помогите пожалуйста.. Ну точнее надо настройки комьютера, там что ставим тему...

Смоделировать формирование железнодорожного состава с использованием структуры списка
В качестве модели хранения данных должны быть использованы стек или очередь или кольцо. Смоделировать формирование железнодорожного...

Даны 2 списка, содержащих фамилии футболистов основного состава команды и запасного. Провести К замен
Даны 2 списка, содержащих фамилии футболистов основного состава команды и запасного. Провести К замен.

Даны 2 списка, содержащих фамилии футболистов основного состава команды и запасного. Провести К замен
Даны 2 списка, содержащих фамилии футболистов основного состава команды и запасного. Провести К замен.

Даны два списка, содержащие фамилии футболистов основного состава команды и запасного. Произвести К замен
Подскажите а как это будет в с++? Даны два списка, содержащие фамилии футболистов основного состава команды и запасного. Произвести К...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru