20980

Рекурсивная обработка списковой информации

Лабораторная работа

Информатика, кибернетика и программирование

DEFUN F7_1 L COND NULL L 0 LISTP CAR L F7_1 CAR L F7_1 CDR L T IF NUMBERP CAR L CAR L F7_1 CDR L F7_1 CDR L DEFUN F7 L COND NOT LISTP L Error_Not_list T F7_1 L Определить максимальную глубину списка произвольной структуры. DEFUN F8_1 L COND NULL L 1 ATOM CAR L F8_1 CDR L T MAX 1 F8_1 CAR L F8_1 CDR L DEFUN F8 L COND NOT LIST L Error_Not_list T F8_1 L 1 Найти максимальный элемент в числовом списке...

Русский

2013-08-02

23.34 KB

6 чел.

Лабораторная работа № 2.

Рекурсивная обработка

списковой информации.

  1.  Определить  предикат,  распознающий списки,  имеющие четное (нечетное) количество элементов.

(DEFUN F6_1 (L N)

(COND ((NULL L) (EVENP N))

(T (F6_1 (CDR L) (+ N 1)))

)

)

(DEFUN F6 (L)

(COND ((NOT (LISTP L)) Error!_Not_list!)

 ((NULL L) List_is_empty)

((EQ (F6_1 L 0) T) Chislo_elementov_Chetno)

(T Chislo_elementov_Nechetno)

)

)

  1.  Подсчитать сумму всех числовых атомов в списке произвольной структуры.

(DEFUN F7_1 (L)

(COND ((NULL L) 0)

((LISTP (CAR L)) (+ (F7_1 (CAR L)) (F7_1 (CDR L))))

(T (IF (NUMBERP (CAR L)) (+ (CAR L) (F7_1 (CDR L))) (F7_1 (CDR L))))

)

)

(DEFUN F7 (L)

(COND ((NOT (LISTP L)) Error!_Not_list!)

 (T (F7_1 L))

)

)

  1.  Определить максимальную глубину списка произвольной структуры.

(DEFUN F8_1 (L)    

(COND

 ((NULL L) 1)

 ((ATOM (CAR L)) (F8_1 (CDR L)))

 (T (MAX (+ 1 (F8_1 (CAR L))) (F8_1 (CDR L))))

)

)

(DEFUN F8 (L)

(COND ((NOT (LIST L)) Error!_Not_list!)

(T (F8_1 L 1))

)

)

  1.  Найти максимальный элемент в числовом списке произвольной структуры.

(DEFUN F9_1 (L)

(COND ((NULL (CDR L)) (IF (NUMBERP (CAR L))

(CAR L)

(F9_1 (CAR L))

))

(T (IF (< (F9_1 (CAR L)) (F9_1 (CDR L)))

(F9_1 (CDR L))

(F9_1 (CAR L))

))

)

)

(DEFUN F9 (L)

(COND ((NOT (LISTP L)) Error!_Not_list!)

((NULL L) List_is_empty)

  (T (F9_1 L))

)

)

  1.  Написать  функцию,  выполняющую  вычисление арифметических выражений, заданных в виде списка. Используемые операции – умножить (*), разделить (/), сложить (+), вычесть (-). При вычислении учитывать приоритет операций и скобочные выражения.

(DEFUN F10_6 (L)

(COND ((NULL (CDR L)) (IF (LISTP (CAR L)) (F10_6 (CAR L)) (CAR L))) ((LISTP (CAR L))

(SETQ L (APPEND (LIST (FUNCALL (CADR L) (F10_6 (CAR L))

(F10_6 (CADDR L)))) (CDDDR L))) (F10_6 L))

(T (SETQ L (APPEND (LIST (FUNCALL (CADR L) (CAR L) (F10_6 (CADDR L)))) (CDDDR L))) (F10_6 L))

)

)

(DEFUN F10_5 (L P)

(IF (NULL P) (SETQ L (APPEND (LIST (F10_3 (CAR L))) (CDR L))))

(COND ((NULL L) NIL)

((OR (EQ (CADR L) "*" ) (EQ (CADR L) "/" )) (APPEND (LIST (CAR L) (CADR L)) (F10_5 (CDDR L))))

(T (LIST (CAR L)))

)

)

(DEFUN F10_4 (L)

(COND ((NULL (CDR L)) NIL)

((OR (EQ (CADR L) "*" ) (EQ (CADR L) "/" )) (F10_4 (CDDR L)) )

(T (CDR L))

)

)

(DEFUN F10_3 (L)

(COND ((NULL L) NIL)

((ATOM L) L)

(T (F10_2 L))

)

)

(DEFUN F10_2 (L P)

(IF (NULL P) (SETQ L (APPEND (LIST (F10_3 (CAR L))) (CDR L))))

(COND ((NULL (CDR L)) L)

((OR (EQ (CADR L) "*") (EQ (CADR L) "/")) (SETQ L (CONS (F10_5 L P) (F10_4 L))) (F10_2 L 1))

(T (APPEND (LIST (CAR L) (CADR L)) (F10_2 (CDDR L))))

)

)

(DEFUN F10_1 (L P)

(COND ((AND (NOT (NUMBERP (CAR L))) (NOT (LIST (CAR L)))) NIL)

((AND (LISTP (CAR L)) (NULL P)) (AND (F10_1 (CAR L)) (F10_1 L 1)))

((NULL (CDR L)) T)

((NULL (CDDR L)) NIL)

((OR (EQ (CADR L) '+ ) (EQ (CADR L) '- ) (EQ (CADR L) '* ) (EQ (CADR L) '/ ))

(F10_1 (CDDR L)))

(T NIL)

)

)

(DEFUN F10 (L)

(COND ((NOT (LISTP L)) Error!_Not_list!)

((NULL L) List_is_empty)

((NOT (F10_1 L NIL)) Syntax_error!)

(T (SETQ L (F10_2 L)) (F10_6 L))

)

)


 

А также другие работы, которые могут Вас заинтересовать

48872. Расчет привода дискового питателя 842.5 KB
  Расчет коэффициента нагрузки.16 Расчет коэффициентов нагрузки.1 Определение общего КПД привода ηобщ общий КПД привода Применим следующую формулу для определения общего КПД привода дискового питателя
48873. Разработать печатный узел устройства с помощью пакета программ САПР P-CAD 2006 1.02 MB
  Чтобы создать новую библиотеку необходимо выполнить следующую последовательность действий: Выбрать команду Librry New. Для подготовки редактора к работе необходимо выполнить следующие операции: Выбрать команду Options Configure и в появившемся окне установить размер рабочего поля формата А4. Выбрать команду View Snp to grid для привязки курсора к узлам сетки. Выбрать команду Options Grids и установить шаг сетки равный 1.
48874. Разработка участка топливной аппаратуры на 628 автомобилей МАЗ-53371 2.93 MB
  Расчет годового объема работ Расчет годового объема работ по ТО ТР и самообслуживанию. Разработка участка топливной аппаратуры на 628 автомобилей МАЗ 53371 Лит.
48875. Определение видовой принадлежности грибов 717.5 KB
  Обучение нейросети. Применение нейросети для определения вида грибов. Искусственные нейронные сети прочно вошли в нашу жизнь и в настоящее время широко используются при решении самых разных задач и активно применяются там где обычные алгоритмические решения оказываются неэффективными или вовсе невозможными. Нейронные сети исключительно мощный метод моделирования позволяющий воспроизводить чрезвычайно сложные зависимости.
48876. ПРОГНОЗИРОВАНИЕ БУКМЕКЕРСКИХ КОЭФФИЦИЕНТОВ 108.5 KB
  Но букмекерам приходится решать несколько иную задачу им необходимо оценить вероятность каждого исхода матча победу поражение какойлибо команды или ничейный результат и по итогам этой оценки определить какую сумму они готовы выплачивать победителю в случае если тот правильно сумел предугадать результат. Задача состоит в том чтобы с помощью нейронных сетей определить коэффициенты на матчи с возможными исходами: победа первой команды победа второй команды ничья. Ниже приводится их список: количество выигранных в прошлом сезоне...
48877. Использование нейронных сетей в банковском деле 398 KB
  Искусственные нейронные сети Нейросети в банковском деле Глава Постановка задачи Для решения поставленной задачи будем использовать персептрон основанный на нейронной сети с 14ю входами с 1 выходным и с двумя скрытыми слоями. Нейронные сети и нейрокомпьютеры это одно из направлений компьютерной индустрии в основе которого лежит идея создания искусственных интеллектуальных устройств по образу и подобию человеческого мозга.