Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LISP простая рекурсия, помогите плз 
:(
    Опции темы
mego4el
  Дата 21.5.2012, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 19.9.2010

Репутация: нет
Всего: нет



необходимо написать маленькую программу, с использованием управляющих форм LISPa.

реализовать: нахождение разности списков R=S1/S2 (элементы всех уровней).
тип рекурсии: параллельное ветвление рекурсии.
форма представление результата: результатом есть список, содержащий исходный и результирующие.

помогите пожалуйста!. спасибо!
PM MAIL   Вверх
Stolzen
Дата 8.7.2012, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: нет
Всего: 48



Что значит всех уровней?

Так, может
Код

(define (difference set1 set2)
    (cond
        ((null? set1) null)
        ((element-of-set? (car set1) set2)
            (difference (cdr set1) set2))
        (else
            (cons (car set1) (difference (cdr set1) set2)))
    )
)

(define (element-of-set? x set)
    (cond
        ((null? set) false)
        ((equal? x (car set)) true)
        (else
            (element-of-set? x (cdr set)))
    )
)



--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
_sg
Дата 8.7.2012, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 16.5.2007

Репутация: 2
Всего: 2



Код

(defun flat (w &optional acc) 
  (cond ((null w) acc)
        ((atom w) (cons w acc))
        ((flat (car w) (flat (cdr w) acc)))))

(defun wvd (w v)
  (list w v (set-difference (flat w) (flat v))))

> (wvd '(a b (c) d) '((c d) e))
((A B (C) D) ((C D) E) (A B))

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
_sg
Дата 19.11.2014, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 16.5.2007

Репутация: 2
Всего: 2



как вариант:
Код

(defun flat (w)
  (loop for a in w 
        if (and a (atom a)) collect a
        else nconc (flat a)))

(defun wvd (w v)
  (list w v (set-difference (flat w) (flat v))))

> (wvd '(a b (c) d) '((c d) e))
((A B (C) D) ((C D) E) (A B))

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.1475 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.