|
1 / 1 / 0
Регистрация: 13.05.2012
Сообщений: 16
|
||||||
Список: Написать программу для выделения списков в заданном интервале в произвольно введенном исходном списке.17.03.2013, 23:55. Показов 3268. Ответов 27
Метки нет (Все метки)
Написать программу для выделения списков в заданном интервале в произвольно введенном исходном списке.
Сформировать их них список и вывести его. Исходный список имеет уровень 0, вложенный список имеет уровень 1 и т.д. Пример. (a(b(с 1)d e)f((2(g))3)) с 2-3 уровни ((с 1)(2(g))(g)) Пыталась сначала выделить списки на определенном уровне, но и это не работает правильно. Помогите, пожалуйста!!!
0
|
||||||
| 17.03.2013, 23:55 | |
|
Ответы с готовыми решениями:
27
Написать программу выделения списков на заданном уровне Написать программу выделения атомов в заданном интервале уровней Написать функцию , которая строит список элементов, стоящих в исходном списке на четных местах |
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|||
| 18.03.2013, 01:19 | |||
|
Nsity, пока вам не написали решение, я подкину вам идею, чтобы вы смогли попробовать собственные силы. Здесь можно написать очень компактную функцию.
Пусть l и n - границы, как в ваших обозначениях. Если l > n или n < 0 - прекрасно, решений нет. (В задаче целесообразно допускать и отрицательные значения для границ.) Нормальный случай: n < l, l >= 0. Здесь можно мыслить так: пройтись по элементам списка, и если элемент сам является спискам, применить к нему ту же функцию, но с параметрами n - 1 и l - 1. То есть спускаясь к подсписку, нас снова интересуют его подсписки, но поскольку глубина увеличилась на единицу, то интересуют подсписки на единицу меньшей глубины. Вроде несложная идея. Плюс: к результату нужно присоединить сам список, если 0 <= n <= 1. Попробуйте написать. Это несложно: проглядывают cond и рекурсия. Добавлено через 11 минут И пара стилистических замечаний. Во-первых и в главных! Соблюдайте индентацию. Человек воспринимает структуру лиспокода по отступам. Очень грубо говоря: 1) вложенный блок сдвигается на две позиции; 2) аргументы функции - друг под другом. На самом деле все пользуются специальными средами разработки навроде LispBox, которые форматируют код автоматически. Во-вторых, не выделяйте отдельную строку для закрывающих скобок, это не принято. (Человек воспринимает структуру лиспокода по отступам, а не по скобкам.) В-третьих, пишите символы маленькими буквами. Это обычное соглашение: человек пишет Лиспу маленькими, Лисп отвечает большими. Что касается самого кода. Я как член setf-лагеря говорю вам: во всех случаях используйте для присваивания setf, не прогадаете! А вообще, не злоупотребляйте присваиванием. Потренируйтесь писать функции в функциональном стиле (живут же люди вообще без присваиваний!), вы увидите, что нужда в присваивании появляется не так часто. Конечно, на Лиспе можно писать и так и сяк и наперекосяк - как фантазия позволяет; так развивайте же фантазию, а не зацикливайтесь на паскалеподобном коде. ![]() Добавлено через 7 минут Замеченные опечатки:
0
|
|||
|
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
|
||
| 18.03.2013, 02:07 | ||
|
0
|
||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 18.03.2013, 02:08 | |
|
Что-то в два ночи некорректность ускользает от меня.
Мы же не лезем в структуру подсписков, мы просто сами подсписки собираем.
0
|
|
|
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
|
|
| 18.03.2013, 02:11 | |
|
Как подсписки могут быть собраны без своих элементов (подсписков)?
Добавлено через 1 минуту Вроде, нижняя граница диапазона, по условию должна их отрезать.
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 18.03.2013, 02:11 | |
|
А чем вам не нравится тестовый пример? Там и список, и подсписок.
0
|
|
|
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
|
||
| 18.03.2013, 02:13 | ||
|
Добавлено через 35 секунд тем, что в тестовом примере нет уровней ниже третьего
0
|
||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 18.03.2013, 02:14 | |
|
(c 1), (2 (g)) - второй
(g) - третий
0
|
|
|
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
|
|
| 18.03.2013, 02:16 | |
|
или, я неправильно понял условие, и диапазон не задается?
Добавлено через 1 минуту а если бы был четвертый, то он дожен быть отрезан, нет?
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||||||
| 18.03.2013, 02:16 | ||||||
|
Моя супер-прога:
0
|
||||||
|
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
|
|
| 18.03.2013, 02:19 | |
|
можно не задавать третий, если глубже третьего нет
Добавлено через 2 минуты (h) - четвертый
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 18.03.2013, 02:20 | |
|
(h) - четвёртый, но он и не входит в список-ответ.
0
|
|
|
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
|
|
| 18.03.2013, 02:24 | |
|
что вернет (lists-inside '(a (b (c 1) d e) f ((2 (g ((h)))) 3)) 2 3)) ?
Добавлено через 1 минуту ((G (H)) (2 (G (H))) (C 1)) Добавлено через 2 минуты в Вашем примере, (h) - третий, h - четвертый
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||||||||
| 18.03.2013, 02:27 | ||||||||
|
Я спросил Оракул:
(G (H)) (2 (G (H))) (C 1) Добавлено через 2 минуты
0
|
||||||||
|
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
|
|
| 18.03.2013, 02:28 | |
|
(lists-inside '(a (b (c 1) d e) f ((2 (g ((h)))) 3)) 2 3) - тогда зачем задан последний параметр?
Добавлено через 1 минуту если берутся все вложенные, хоть до 7 уровня, хоть до 100 уровня?
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||
| 18.03.2013, 02:33 | ||
|
Nsity, ещё вам пара хинтов:
1) Форма с if является выражением, которое возвращает значение. Часть "иначе" обязательна (иначе что возвращать иначе?). 2) dolist не требует progn. Добавлено через 1 минуту Все вложенные не выписываются в окончательный ответ. Смотрите:
0
|
||
|
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
|
|
| 18.03.2013, 02:38 | |
|
тогда неизбежны повторы, задваивание, затраивание элементов, возможно корректно в диапазоне было бы искать не подписки или элементы, а атомы
Добавлено через 37 секунд задание ради задания
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 18.03.2013, 02:42 | |
|
А, вы насчёт ((a) ((a)) (((a)))), где (a) может быть выведено до трёх раз? Ну да, так. (Математически элегантно было бы привязать к каждому элементу ответа его "адрес" в дереве, ну да не требуется и слава богу.)
0
|
|
|
1 / 1 / 0
Регистрация: 13.05.2012
Сообщений: 16
|
||||||
| 18.03.2013, 09:52 [ТС] | ||||||
|
helter,
Попыталась что-то сделать по вашим рекомендациям, но теперь выводит просто список списков всех уровней. Не понимаю, как за границы интервала не выходить.
0
|
||||||
|
Супер-модератор
|
||||||
| 18.03.2013, 12:30 | ||||||
|
Вот:
0
|
||||||
| 18.03.2013, 12:30 | |
|
Помогаю со студенческими работами здесь
20
Составить программу для выделения D - экстремального подмножества в заданном графе согласно указанному алгоритму его выделения
Выбрать в другой список те строки, которые встречаются в исходном списке более одного раза и напечатать созданный список Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|