Информационный портал Media Systems & Bear Corp.

Главная Новости Delphi C&C++ Tеория Графов Web-Design Математика Исходники и Проекты Лисп и Пролог Ссылки

Портал :: Программирование на Лиспе :: Лабораторные работы
Лабораторная работа № 5( Скачать архив )  

 

Функционалы.

Задание 21: Сформировать список, содержащий номера позиций элементов исходного списка, удовлетворяющих заданному условию. Запускать (PosP ...).

(defun RunPosP (F L N)
(cond ((Null L) NIL)
((FunCall F (Car L)) (Cons N (RunPosP F (Cdr L) (+ N 1))))
(T (RunPosP F (Cdr L) (+ N 1)))
)
)

(Defun PosP (F L)
(Cond ((ListP L) (RunPosP F L 1))
(T "Non-list argument")
)
)

(rds)

-----------------------------------------------------------------

Задание 22: Задан линейный числовой список. Сформировать список сумм подмножеств элементов исходного списка таким образом, что на первом месте должны стоять сумма всех элементов списка, на втором - сумма без первого, на третьем - сумма без первых двух и т. д. Запускать (SumList ...).

(Defun RunSumList (L)
(MapList '(Lambda (L) (Apply + L)) L)
)

(defun SumList (L)
(cond ((ListP L) (RunSumList L))
(T (Print "Non-list Argument"))
)
)
(rds)

-----------------------------------------------------------------

Задание 23: Удалить из исходного линейного списка все вхождения заданного элемента. Запускать (DelItem ...).

(Defun RunDelItem (L A)
(MapCon '(Lambda (L2) (If (Eq (Car L2) A)
Nil
(List (Car L2))
)
)
L
)
)

(defun DelItem (A L)
(cond ((Not (Atom A)) "Non-Atom First Argument")
((Not (ListP L)) "Non-List Second Argument")
(T (RunDelItem L A))
)
)
(Rds)


----------------------------------------------------------------

Задание 24:Оставить в исходном линейном списке не более одного вхождения каждого элемента. Запускать (TheOnly ...).

(Defun RunTheOnly (L)
(MapCon '(Lambda (L2)
(if (Member (Car L2) (Cdr L2))
Nil
(List (Car L2))
)
)
L
)
)

(defun TheOnly (L)
(Cond ((ListP L) (RunTheOnly L))
(T "Non-list Argument")
)
)

(rds)

-------------------------------------------------------------------

Задание 25: Даны два исходных списка одного размера. Сформировать из неравных друг другу элементов с одинаковыми порядковыми номерами точечные пары, объединив их в один результирующий список. Запускать (Sley ...).

(Defun RunSley (L1 L2)
(MapCan '(Lambda (A1 A2)
(IF (And (Atom A1) (Atom A1) (Not (= A1 A2)))
(List (Cons A1 A2))
Nil
)
)
L1
L2
)
)


(Defun Sley (L1 L2)
(Cond ((Not (ListP L1)) "Non List First Argument!")
((Not (ListP L2)) "Non List Second Argument!")
((Not (= (Length L1) (Length L2))) "Different Length!!")
(T (RunSley L1 L2))
)
)


©Bear Labs, Inc. 2001, All Rights Reserved.

 
   
  Гостевая книга . Связь с разработчиками: Bear Corporation, Media Studio.  
  Это место для вашей рекламы  

Дизайн: Bear Corner, Inc. & Media Sudio.
Последнее обновление: 24.03.2001.

Rambler's Top100 Rambler's Top100
Hosted by uCoz