Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу CART-функция образует декартово произведение L заданых множеств
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Horror Horror вне форума
Member
 
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2007
По умолчанию CART-функция образует декартово произведение L заданых множеств - 03.12.2007, 15:10

Всем привет!
Благодарю вас за помощь!
Я счаслив и получил 4 по экзу!

Помогите плиз еще с функциями:

Цитата:
CART-функция образует декартово произведение L заданых множеств L1 u L2
,т.е формирует список L3
, элементы которого являються всевозможные списки, содержащие по 2 элемента каждый
,где 1 элемент - из L1
2 элемент L2
Цитата:
REMSEC удаляет из списка L каждый второй элемент
Цитата:
DEPTH вычисляет глубине списка (самой глубокой ветви)
Ответить с цитированием
  (#2 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 03.12.2007, 18:49

Хювёнен-Сеппянен "Мир Лиспа" т.1:
Вариант 1
Код:
(defun CART (L1 L2); в оригинале ДЕКАРТОВО
  (mapcar
  '(lambda (x)
    (mapcar
    '(lambda (y)
      (list x y))
     L2))
   L1))
Вариант 2
Код:
(defun CART (L1 L2); в оригинале ДЕКАРТОВО
  (cond
   ((null L1) nil)
   (T
    (append
     (maplist '(lambda (u) (list (car L1) (car u))) L2)
     (CART (cdr L1) L2)))))
Вариант 3
Код:
(defun ИНДЕКС (x y fn)
  (cond
   ((null x) y)
   (T (funcall fn (car x) (ИНДЕКС (cdr x) y fn)))))
(индекс x y fn) => (fn 'x1 (fn 'x2 ... (fn 'xn y) ...))
Код:
(defun CART (L1 L2); в оригинале ДЕКАРТОВО
  (индекс
   L1
   nil
   (function
    (lambda (u v)
     (индекс
      L2
      v
      (function
       (lambda (p q)
        (cons (list u p) q))))))))
Хювёнен-Сеппянен "Мир Лиспа" т.1:
Код:
(defun REMSEC (L); в оригинале КАЖДЫЙ-ВТОРОЙ
  (cond
   ((null L) nil)
   ((null (cdr L)) L)
   (T (cons (car L) (REMSEC (cddr L))))))
Хювёнен-Сеппянен "Мир Лиспа" т.1:
Код:
(defun DEPTH (x); в оригинале ГЛУБИНА
  (cond
   ((atom x) 1)
   (T (max1 (+ 1 (DEPTH (car x))) (DEPTH (cdr x))))))
(defun MAX1 (x y); встроенная функция MAX
  (if (> x y) x y))
Ответить с цитированием
  (#3 (permalink)) Старый
Horror Horror вне форума
Member
 
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2007
По умолчанию 03.12.2007, 23:38

VH
Оперативно! Пасибо огромное !
Ответить с цитированием
  (#4 (permalink)) Старый
Horror Horror вне форума
Member
 
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2007
По умолчанию 12.12.2007, 14:57

Всем привет!

Немоглибы вы мне расписать принцип
работы этих функций

можно прям на русском языке
типо

функция Карт(Л1 Л2)
если Л1 пусто
то...

в таком роде просто с некотыми функциями(командами)
я вовсе не знаком (

пожалуйсто распишите один из вариантов КАРТ
и REMSEC ,DEPTH
Ответить с цитированием
  (#5 (permalink)) Старый
Undertaker Undertaker вне форума
Member
 
Сообщений: 68
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.10.2007
По умолчанию 14.12.2007, 21:57

Код:
Алгоритм REMSEC (L)
Начало
if (L- пустой) then
                  возвращается nil
                  выход
if (хвост L- пуст)then
                      возвращается L
                      выход
                  else 
                      вернуть список (голова L , REMSEC (cddr L))
Конец

функция CDDR выдает список без двух первых элементов
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Undertaker Undertaker вне форума
Member
 
Сообщений: 68
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.10.2007
По умолчанию 06.03.2008, 12:43

алгоритм для :

Код:
(defun CART (L1 L2); в оригинале ДЕКАРТОВО
  (cond
   ((null L1) nil)
   (T
    (append
     (maplist '(lambda (u) (list (car L1) (car u))) L2)
     (CART (cdr L1) L2)))))
Будет как - то так :
Код:
Алгоритм CART (L1 L2)
Начало
if (L1- пустой) then
                           возвращается nil
                           выход
                 else
                           собираем итоговый список из списков по правилу (голова L1 + голова L2)
                           повторяем для  ((хвост L1),L2)
else
      (CART (хвост L1), L2)                
Конец
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
куплю картриджи http://cart-shop.ru/ fixx1582 Куплю 0 23.11.2011 18:54
Подсчет среднего значения заданых чисел в HTMLPad Oksana01 Вопросы начинающих программистов 0 13.12.2010 19:57
Пересечение множеств pasha51113 Prolog 6 30.04.2010 15:54
Пересечение множеств Пальмира Prolog 3 29.07.2009 19:45
Функция типа Т9 как на сотовых.Есть ли прога для ПК чтоб была та же функция ? Технарь Софт и программы 11 14.03.2009 12:39
Декартово произведение графов Flash[n2o] Prolog 11 16.02.2009 14:11
Объединение N множеств Finogenov Prolog 8 28.11.2007 19:54
Списки: 1)первый элемент, 2)декартово произведение Венечка Prolog 7 09.12.2005 16:28
Найти произведение А * В в С++ zarp7 Вопросы начинающих программистов 2 21.07.2005 19:50
Пересечение множеств NetSlow Prolog 6 22.05.2005 18:59
Произведение цифр front Prolog 9 17.12.2004 22:06
Произведение цифр = 18 Миха Prolog 3 13.12.2004 17:14



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов