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

Задача 31.

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

; Отыскать в списке такой атом, который встречается ;

; за один атом перед заданным ;

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

(DEFUN PATOM (X LST)

(COND ( (NULL LST) NIL )

( (< (LENGTH LST) 3) NIL )

( T (NTH (- (NATOM X LST) 2)

LST) )

)

)

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

(DEFUN NTH (N LST)

; Функция возвращает N-й элемент списка LST ;

(COND ( (< N 1) 0 )

( (EQ N 1) (CAR LST) )

( T (NTH (- N 1) (CDR LST)) )

)

)

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

(DEFUN NATOM (X LST)

; Функция возвращает позицию заданного элемента ;

(COND ( (NULL LST) 0)

( (EQ X (CAR LST)) 1)

( (MEMBER X LST) (+ 1 (NATOM X (CDR LST))) )

( T 0 )

)

)

Задача 32.

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

; Напишите функцию INSLIST, зависящую от трех ;

; аргументов N, U и V, вставляющую в список U, ;

; начиная с N-го элемента список V ;

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

(DEFUN MAIN (LST1 N LST2)

(COND ( (EQ (LENGTH LST1) N) (APPEND LST1 LST2) )

( T (APPEND (FIRSTN LST1 N)

(APPEND LST2

(LASTN LST1

(-

(LENGTH LST1) N)))

) ) ) )

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

(DEFUN FIRSTN (LST N)

(COND ( (EQ N 1) (LIST (CAR LST)) )

( T (CONS (CAR LST)

(FIRSTN (CDR LST)

(- N 1))))

) )

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

(DEFUN LASTN (LST N)

(REVERSE (FIRSTN (REVERSE LST) N))

)

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

(DEFUN APPEND (LST1 LST2)

(COND ( (NULL LST1) LST2 )

( T (CONS (CAR LST1)

(APPEND (CDR LST1) LST2) ))

) )

Задача 33.

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

; Составить список, конгруэнтный данному и состоящий из ;

; глубин погружения каждого элемента исходного списка ;

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

(DEFUN AA (LST)

(AA1 1 LST)

)

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

(DEFUN AA1 (N LST)

(COND ( (NULL LST) NIL)

( T (CONS (GETN N (CAR LST))

(AA1 N (CDR LST))) )

)

)

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

(DEFUN GETN (N LS)

(COND ( (ATOM LS) N )

( T (COND ( (< (LENGTH LS) 2)

(LIST (GETN (+ 1 N)

(CAR LS))) )

( T (AA1 (+ 1 N) LS) )

) ) ) )

Задача 34.

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

; Функция, преобразует список чисел в список чисел, ;

; встречающихся в нем более одного раза ;

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

(DEFUN KOLAM (LAMBDA (LST)

(EL (LIST-SET (TH LST LST)))

))

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

(DEFUN EL (LAMBDA (LST)

(COND

( (NULL LST) NIL )

( (>; (CADR (CAR LST)) 1)

(CONS (CAR (CAR LST)) (EL (CDR LST))) )

( T (EL (CDR LST)) )

)

))

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

(DEFUN LIST-SET (LAMBDA (LST)

; Функция LIST-SET преобразует список LST в множество ;

(COND ( (NULL LST) NIL )

( (MEMBER (CAR LST) (CDR LST))

(LIST-SET (CDR LST)) )

( T (CONS (CAR LST) (LIST-SET (CDR LST))) )

)

))

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

(DEFUN TH (LAMBDA (LST LST0)

; Построение нового списка, содержащего подсписки вида ;

; (Элемент Количество_повторений_этого_элемента_в_списке) ;

(COND ( (NULL LST) NIL)

( T (CONS (LIST (CAR LST)

(KOL (CAR LST) LST0))

(TH (CDR LST) LST0)) )

)

))

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

(DEFUN KOL (LAMBDA (M LST)

; Подсчет количества повторений элемента M в списке LST ;

(COND ( (NULL LST) 0 )

( (EQ (CAR LST) M)

(+ (KOL M (CDR LST)) 1) )

( T (KOL M (CDR LST)) )

)

))

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