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

Задача 35.

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

; Проверить, встречаются ли в данном предложении слова, ;

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

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

(DEFUN MAIN (LAMBDA (LST)

(COND ( (NULL LST) NIL )

( T (OR (WWWW (CAR LST)

(COPYINVERT (CDR LST)))

(MAIN (CDR LST))

)

)

)

))

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

(DEFUN WWWW (LAMBDA (X LST)

(COND ( (NULL LST) NIL )

( (MEMBER X LST) T )

( T (WWWW (CDR LST)) )

)

))

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

(DEFUN COPYINVERT (LAMBDA (LST)

(COND ( (NULL LST) NIL )

( T (CONS (PACK (REVERSE (UNPACK (CAR LST))))

(COPYINVERT (CDR LST))

)

)

)

))

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

Задача 36.

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

; Написать программу перевода целого N в целое число, ;

; запись которого отличается от записи числа N пере- ;

; становкой первой и последней цифр ;

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

(DEFUN PER (LAMBDA (N)

(SETQ L (UNPACK N))

(COND ( (< N 10) N )

( T (NUMBER (STRING-NUM

(APPEND

(LIST (CAR (REVERSE L)))

(REVERSE

(CDR (REVERSE (CDR L))))

(CAR L))

)

)

)

)

))

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

(DEFUN STRING-NUM (LAMBDA (X)

; Перевод списка цифр в список, содержащий ;

; соответствующие однозначные числа ;

(COND ( (NULL X) NIL )

( T (CONS (POSITION (CAR X) (UNPACK 123456789))

(STRING-NUM (CDR X))

)

)

)

))

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

(DEFUN POSITION (LAMBDA (X LST)

; Функция POSITION возвращает положение атома X ;

; в одноуровневом списке LST (первый элемент имеет ;

; номер 1). Если элемента в списке нет, то функция ;

; возвращает 0 ;

(COND ( (NULL LST) 0 )

( (EQ X (CAR LST)) 1 )

( (MEMBER X LST)

(+ 1 (POSITION X (CDR LST))) )

( T 0 )

)

))

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

(DEFUN NUMBER (LAMBDA (LST)

; Дан числовой список LST, содержащий однозначные числа. ;

; "Построить" целое число из элементов данного списка ;

(COND ( (NULL LST) 0 )

( T (+ (* (CAR LST)

(STEPEN 10

(- (LENGTH LST) 1))

)

(NUMBER (CDR LST))

)

)

)

))

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

(DEFUN STEPEN (LAMBDA (X A)

; Возведение целого числа X в целую ;

; неотрицательную степень A ;

(COND ( (ZEROP A) 1 )

( (ZEROP (- A 1)) X )

( T (* (STEPEN X (- A 1)) X) )

)

))

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

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