|
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 7
|
||||||||||||||||
Сократить s-выражение(точечная пара)16.12.2017, 21:17. Показов 1657. Ответов 9
Метки нет (Все метки)
Задание выглядит так:
Сократить следующие S-выражения:
1.Цепочки . Nil просто удаляем; 2. Цепочки . ( удаляем вместе с соответствующей закрывающей скобкой Но у меня получилось реализовать только удаление NIL. Вот код:
Заранее спасибо за ответы.
0
|
||||||||||||||||
| 16.12.2017, 21:17 | |
|
Ответы с готовыми решениями:
9
Сократить выражение |
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||
| 16.12.2017, 21:56 | ||
|
Я бы, может, подсказал бы, но здесь
0
|
||
|
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 7
|
|
| 16.12.2017, 22:19 [ТС] | |
|
На самом деле я не уверена на счет правильности алгоритма, но я предполагаю, что это должно выглядеть примерно так:
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 17.12.2017, 00:18 | |
|
А, что-то понял. Некоторая проблема в том, что в лисповом ридере это уже сделано и работает из коробки. Поэтому если вы передадите вашей (или любой другой) функции аргумент
(a . (b . nil)), а в другой раз — (a b), она не заметит разницы. Не понимаю поэтому, на каком уровне вам надо работать. Может, на уровне потоков?Добавлено через 15 минут То есть я, в частности, хочу сказать, что если вы в репле напишете '(a . (b . (c . nil))), то в ответ он напишет вам, по всей вероятности, (A B C) — тот же список, другая форма записи.
2
|
|
|
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 7
|
|||||||
| 17.12.2017, 00:43 [ТС] | |||||||
|
И если просто так сделать Lisp просто сам все сократит что-ли?
0
|
|||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||||||
| 17.12.2017, 01:01 | ||||||
|
Не знаю. Формально, атомы тоже являются s-выражениями. То есть не надо делать ровным счётом ничего.
Вот, я запускаю лисп, ввожу ваш список, и что вижу:
А лисповые функции работают с лисповыми объектами. Поэтому получается, что если вы хотите, чтобы ваша функция работала с формой записи, как с объектом, вам надо давать ей не распаршенный ридером список, а что-то сырое. Например, поток ввода. Или там, какой-нибудь лексер будет разбивать поток ввода на токены, и ваша функция будет принимать эти токены. Но по вашей формулировке догадаться невозможно. Добавлено через 4 минуты Меня вдруг осенило. А может, предполагается, что вы не функцию будете писать, а сами вручную сделаете? Типа проверки, что вы поняли, как читает лисп, и что можете работать компьютером. Тогда забейте в лисп и перепишите ответы.
1
|
||||||
|
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 7
|
|
| 17.12.2017, 01:18 [ТС] | |
|
Спасибо за столь подробное объяснение.
Да это вариант вводить в ручную, но не знаю в какой форме это сдавать. Так может сделать функцию с проверкой на атом и на список?
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 17.12.2017, 01:29 | |
|
Я говорю — не вводить вручную, а считать вручную. Берёте лист бумаги, пишете: задание 1: такое-то. Решение. ... Ответ: ... . Но это только предположение, я же не ясновидец.
Атомы и списки — тоже уже лисповые объекты, а не формы записи.
0
|
|
|
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
|
|||||||||||||||||||||
| 17.12.2017, 08:53 | |||||||||||||||||||||
1
|
|||||||||||||||||||||
|
Супер-модератор
|
||||||
| 17.12.2017, 11:42 | ||||||
Сообщение было отмечено _sg как решение
Решение
Вот как это нужно понимать:
3
|
||||||
| 17.12.2017, 11:42 | |
|
Помогаю со студенческими работами здесь
10
Сократить выражение Сократить выражение
Сократить логическое выражение Как сократить такое выражение? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|