|
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
|
||
Написать функцию со списками19.10.2015, 18:39. Показов 2018. Ответов 24
Метки нет (Все метки)
Привет всем!
Нахлынула недавно задача:
0
|
||
| 19.10.2015, 18:39 | |
|
Ответы с готовыми решениями:
24
Описать функцию, работающую с двумя списками Написать программу со списками Написать программу со списками и текстовыми файлами |
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 19.10.2015, 18:51 | |
|
Предикат — это функция, возвращающая логическое значение. С дискретной математикой связано постольку-поскольку. Со здравым смыслом связано. Начинаете цикл по элементам списка и одновременно меняете счётчик. Как только счётчик дошёл до номера М, начинаете подставлять элементы в предикат, и если он возвращает истину, добавляем элемент к результату. Как только счётчик дошёл до N, цикл заканчивается.
В лиспе отбросить первые элементы списка вы можете с помощью функции nthcdr. Самый простой способ добавлять к результату — завести список result и добавлять элементы ему в голову: (push e result); в конце — развернуть (nreverse result). А вообще, такая функция уже написана, remove-if-not называется.
1
|
|
|
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
|
|
| 19.10.2015, 20:08 [ТС] | |
|
Мне преподаватель пытался объяснить это. Говорил что-то вроде "Сделайте проверку на четность числа". Только причем здесь проверка. Можете помочь реализовать этот код на лиспе, не прибегая к использованию лямбды?
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||
| 19.10.2015, 20:10 | ||
|
Наверно, это он предлагал в качестве предиката взять проверку на чётность. То есть собрать все чётные числа с такого-то по такое-то. Вроде бы совершенно понятное задание.
2
|
||
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
| 19.10.2015, 22:01 | |
|
0
|
|
|
Супер-модератор
|
||||||
| 19.10.2015, 22:27 | ||||||
3
|
||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|||
| 19.10.2015, 22:33 | |||
|
1
|
|||
|
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
|
|
| 19.10.2015, 22:36 [ТС] | |
|
Можно ли написать код, но без remove-if-not? Преподаватель скажет, мол "этот remove-if-not упрощает все на свете, сделай все сам, ручками". Как вы думаете?
0
|
|
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|||||||
| 19.10.2015, 22:53 | |||||||
|
Добавлено через 7 минут
2
|
|||||||
|
Супер-модератор
|
||||||
| 20.10.2015, 11:00 | ||||||
3
|
||||||
|
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
|
||||||||||||||||
| 27.10.2015, 19:28 [ТС] | ||||||||||||||||
|
Преподаватель мне дал пример, по которому стало все понятно.
Функция должна работать так:
Я ожидал от него: (33 45 57)
0
|
||||||||||||||||
|
Супер-модератор
|
||||||
| 27.10.2015, 19:38 | ||||||
|
Да, есть ошибка. Вот:
2
|
||||||
|
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
|
||||||
| 27.10.2015, 20:13 [ТС] | ||||||
|
Хм, а нельзя сделать так, чтобы n и m были не номерами элементов списка, а самими значениями?
Например, я хочу сделать так:
Да и в самом коде мы никогда не пользовались подобным: "&optional" или "(c 0)" - я даже не знаю, что это и зачем.
0
|
||||||
|
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
|
|||||||||||||||||
| 27.10.2015, 20:38 | |||||||||||||||||
Сообщение было отмечено Andrea13 как решение
Решение
Andrea13, это будет другая задача, по правилам форума одна тема - одна задача, как вариант:
Добавлено через 3 минуты вариант без спецификатора &aux:
2
|
|||||||||||||||||
|
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
|
||||||
| 27.10.2015, 20:41 [ТС] | ||||||
|
Я просто стал отталкиваться от примера:
Можно, конечно, попробовать разобрать и ваши варианты, но в них есть неизученный материал.
0
|
||||||
|
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
|
|
| 27.10.2015, 20:47 | |
|
0
|
|
|
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
|
|||||||||||||||||||||
| 02.11.2015, 18:35 [ТС] | |||||||||||||||||||||
|
На всякий случай продублирую.
(conditional-range(1 2 3 44 55 66 77 88 100 6756) 1 3 'oddp) Подсчет начнется с 0, 1, 2, 3, 4, 5 .... n А надо, чтобы первый элемент списка имел индекс 1, а не 0. Чтобы с единицы начинался подсчет, например, в вашем случае он выдаст:
0
|
|||||||||||||||||||||
|
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
|
||||||
| 02.11.2015, 20:38 | ||||||
1
|
||||||
|
3 / 3 / 3
Регистрация: 17.10.2012
Сообщений: 147
|
|
| 03.11.2015, 11:35 [ТС] | |
|
(f '(1 2 3 44 55 66 345 654 1000 1004 5432) 3 8 'evenp) --> (44 66 654)
(f '(1 2 3 44 55 66 345 654 1000 1004 5432) 3 8 'oddp) --> (3 55 345) Как заставить программу вывести те же значения, если просто поменяли границы? То есть, как препод сказал - это 0 разницы. Он должен выводить тоже самое. (f '(1 2 3 44 55 66 345 654 1000 1004 5432) 8 3 'oddp) --> (3 55 345)
0
|
|
|
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
|
||||||
| 03.11.2015, 11:51 | ||||||
0
|
||||||
| 03.11.2015, 11:51 | |
|
Помогаю со студенческими работами здесь
20
Надо написать программу для роботы с линейными списками Написать шаблонный класс List для работы с одноправленными списками в динамической памяти
Написать функцию, которая, в зависимости от выбора пользователя вызывает соответствующую функцию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[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-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|