
Задача 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) )
)
))
Текст этой библиотеки можно взять здесь.