Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
501_12 Громков.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
504.32 Кб
Скачать

Задача 37.

; ----------------------------------------------- ;

; Попытайтесь восстановить условие данной задачи! ;

; ----------------------------------------------- ;

(DEFUN AAA (LAMBDA (Y LST)

(SETQ W (COPY LST LST Y))

(COPY1 W W)

))

; ---------------------------- ;

(DEFUN COPY (LAMBDA (LST LST1 Y)

; Построение списка, конгруэнтного списку LST и ;

; содержащего символы вида G*** вместо вхождений ;

; символов Y ;

(COND ( (NULL LST) NIL )

( (AND (ATOM LST) (EQ LST Y)) (GENSYM) )

( (AND (ATOM LST) (NOT (EQ LST Y))) LST )

( T (CONS (COPY (CAR LST) LST1 Y)

(COPY (CDR LST) LST1 Y)

)

)

)

))

; --------------------------- ;

(DEFUN COPY1 (LAMBDA (LST LST1)

; Построение списка, конгруэнтного списку LST и ;

; содержащего "глубины погружения" элементов в ;

; список LST вместо символов G*** ;

(COND ( (NULL LST) NIL )

( (AND (ATOM LST) (EQ (CAR (UNPACK LST)) G))

(POISK LST LST1) )

( (AND (ATOM LST) (NOT (EQ (CAR (UNPACK LST)) G)))

LST )

( T (CONS (COPY1 (CAR LST) LST1)

(COPY1 (CDR LST) LST1)) )

)

))

; ----------- ;

(SETQ GENSYM 0)

(DEFUN GENSYM (LAMBDA (NUM LST)

(SETQ NUM (- 4 (LENGTH GENSYM)))

(LOOP

( (ZEROP NUM) )

( PUSH 0 LST )

( SETQ NUM (- NUM 1)) )

(PROG1

(PACK (NCONC (CONS (QUOTE G) LST) (LIST GENSYM)))

(SETQ GENSYM (+ GENSYM 1))

)

))

; ------------------------ ;

(DEFUN POISK (LAMBDA (X LST)

; Нахождение "глубины погружения" X в список LST ;

(COND ( (MEMBER X LST) 1 )

( (MEMBER2 X (CAR LST))

(+ 1 (POISK X (CAR LST))) )

( T (POISK X (CDR LST)) )

)

))

; -------------------------- ;

(DEFUN MEMBER2 (LAMBDA (X LST)

; Предикат MEMBER2 устанавливает вхождение ;

; элемента X в многоуровневый список LST ;

(COND ( (NULL LST) NIL)

( T (OR (COND ( (ATOM (CAR LST))

(EQ X (CAR LST)) )

( T (MEMBER2 X (CAR LST)) )

)

(MEMBER2 X (CDR LST))) )

)

))

Текст этой библиотеки можно взять здесь.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]