Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 2

Рекурсивный проход по списку символов

23.01.2020, 18:35. Показов 1192. Ответов 7
Метки lisp (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Прошу помочь с решением задачи (Common Lisp) на рекурсию.
Задача: рекурсивно пройти по списку, который является списком символов, и для каждого символа получить строковое выражение (говорят, чтобы получить такое строковое выражение, предусмотрена какая-то специальная функция).
Для каждого уровня получить строку и записать эти строки в результирующий список.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2020, 18:35
Ответы с готовыми решениями:

Рекурсивный проход по списку. Вложенность
По следам недавней темы. Дается список '(a b c (d e (f g (O U Y))) j x y) нужно получить '("abc"...

Как реализовать полный проход по списку?
Здравствуйте. Использую AMZI Prolog. Есть несколько предикатов: price(Arg,,). price(Arg,,T1):- arg(2,H,Ha), Arg \= Ha,!, ...

Проход по списку
Вот код: numbers = sequence = j = 0 i = 0 while j + 3 != len(numbers): j += 1 for i in numbers: sequence.append(i)

7
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
23.01.2020, 19:05
Приведи пример исходных данных и результата
0
0 / 0 / 0
Регистрация: 23.01.2020
Сообщений: 2
23.01.2020, 19:18  [ТС]
Примеры:
1) если линейный список
(d st a)
результат: ("d st a")
2) ((d st a) (d a) p s)
результат: (("d st a") ("d a") "p s")
Требуется применить функцию concatenate
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
23.01.2020, 20:52
Lisp
1
2
3
4
5
6
7
8
9
(defun task (list &optional (acc ""))
      (cond ((null list) (if (equal acc "") nil (list acc)))
            ((atom (car list)) (task (cdr list) 
                                     (concatenate 'string acc 
                                       (if (equal acc "") "" " ")
                                       (string (car list)))))
            (t (if (equal acc "") 
                   (cons (task (car list)) (task (cdr list)))
                   (cons acc (cons (task (car list)) (task (cdr list))))))))
1
Заблокирован
23.01.2020, 22:10
Lisp
1
2
3
4
5
6
7
8
9
(define (hmm lst)
  (cond ((empty? lst) lst)
        ((symbol? (car lst))
         (cons (symbol->string (car lst)) (hmm (rest lst))))
        ((list? (car lst))
         (cons (map (lambda (x) (symbol->string x)) (car lst)) (hmm (rest lst))))))
 
(hmm '(a b (c d) e f))
=>    '("a" "b" ("c" "d") "e" "f")
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
24.01.2020, 08:42
sodda, это немного не то, что хотел ТС
0
 Аватар для _sg
4708 / 4403 / 380
Регистрация: 12.05.2012
Сообщений: 3,101
24.01.2020, 10:06
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun sstring (w &optional ac &aux (a (car w)) (d (cdr w)))
  (cond ((null w) (if ac `(,(frmt (nreverse ac)))))
        ((atom a) (sstring d (cons a ac)))
        (ac (cons (frmt (nreverse ac))
                  (cons (sstring a nil) (sstring d nil))))
        ((cons (sstring a nil) (sstring d nil)))))
 
(defun frmt (w) (format nil  "~{~a~^ ~}" w))
 
> (sstring '(a b (d st a) (d a) p s))
("A B" ("D ST A") ("D A") "P S")
2
Заблокирован
24.01.2020, 12:32
Catstail, да, невнимательно глянул пример
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2020, 12:32
Помогаю со студенческими работами здесь

Рекурсивный проход
Рекурсивный проход по всем каталогам в заданной директории, удалить все файлы из директории, созданные или измененные сегодня, в названии...

Проход по списку без цикла
Добро всем :senor: у меня в Image1 загружаются фотографии с определенной папки, названия файлов (фотографий) я занес в StringList а...

Проход по списку с удаление элементов
Доброе время суток, есть ArrayList<Object>(); нужно: 1. взять элемент 2. выполнить действие с элементом 3. удалить элемент из...

Определить количество самых дешевых книг, используя 1 проход по списку
В списке хранится информация о стоимости каждой из 60 книг. Определить количество самых дешевых книг, используя 1 проход по списку. ...

Рекурсивный проход по всем папкам и удаление файла по имени
Добрый день Пытаюсь сделать скрипт для который бы проходил по всем папкам на сервере и удалял файл с нужным именем Вот склепал из...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru