Функционалы.
Задание 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.