Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Списки, Сравнение списков и поиск подсписка в сп 
:(
    Опции темы
yarus88
Дата 29.3.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1) Нужно написать функцию, возвращающую Т,если одинаковые атомы расположены в списках х и у в одном и том же порядке.

2) Написать функцию аргументов L1 и L2, возвращающую Т, если L1 является подсписком L2. Элементами списков могут быть атомы и списки любой глубины вложенности.
PM MAIL   Вверх
VH_
Дата 7.4.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



1) «...если одинаковые атомы расположены...»:
вариант теоретический
Код
(defun F (set1 set2)
  ((lambda (intersect)
    (if intersect
     ((lambda (fdef)
       (fdef fdef set2 intersect))
      (lambda (fname s i)
       (if (null i) T
        ((lambda (found)
          (if found
           (fname fname (cdr found) (cdr i))))
         (member (car i) s :test 'EQ)))))))
   ((lambda (fdef)
     (fdef fdef set1 set2))
    (lambda (fname s1 s2)
     (if s1
      ((lambda (elem result)
        (if (member elem s2 :test 'EQ)
         (cons elem result)
         result))
       (car s1)
       (fname fname (cdr s1) s2)))))))

вариант, который выполняется в XLISP-PLUS 3.04
Код
(defun F (set1 set2)
  ((lambda (intersect)
    (if intersect
     ((lambda (fdef)
       (funcall fdef fdef set2 intersect))
      (lambda (fname s i)
       (if (null i) T
        ((lambda (found)
          (if found
           (funcall fname fname (cdr found) (cdr i))))
         (member (car i) s :test 'EQ)))))))
   ((lambda (fdef)
     (funcall fdef fdef set1 set2))
    (lambda (fname s1 s2)
     (if s1
      ((lambda (elem result)
        (if (member elem s2 :test 'EQ)
         (cons elem result)
         result))
       (car s1)
       (funcall fname fname (cdr s1) s2)))))))

1) «...если одинаковые элементы расположены...»:
вариант теоретический
Код
(defun F (set1 set2)
  ((lambda (intersect)
    (if intersect
     ((lambda (fdef)
       (fdef fdef set2 intersect))
      (lambda (fname s i)
       (if (null i) T
        ((lambda (found)
          (if found
           (fname fname (cdr found) (cdr i))))
         (member (car i) s :test 'EQUAL)))))))
   ((lambda (fdef)
     (fdef fdef set1 set2))
    (lambda (fname s1 s2)
     (if s1
      ((lambda (elem result)
        (if (member elem s2 :test 'EQUAL)
         (cons elem result)
         result))
       (car s1)
       (fname fname (cdr s1) s2)))))))

вариант, который выполняется в XLISP-PLUS 3.04
Код
(defun F (set1 set2)
  ((lambda (intersect)
    (if intersect
     ((lambda (fdef)
       (funcall fdef fdef set2 intersect))
      (lambda (fname s i)
       (if (null i) T
        ((lambda (found)
          (if found
           (funcall fname fname (cdr found) (cdr i))))
         (member (car i) s :test 'EQUAL)))))))
   ((lambda (fdef)
     (funcall fdef fdef set1 set2))
    (lambda (fname s1 s2)
     (if s1
      ((lambda (elem result)
        (if (member elem s2 :test 'EQUAL)
         (cons elem result)
         result))
       (car s1)
       (funcall fname fname (cdr s1) s2)))))))

PM MAIL   Вверх
yarus88
Дата 13.4.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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