Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Задача ШІ-2

На мові програмування Лісп написати функцію обчислення значення многочлена в точці за схемою Горнера.

; проверяет или obj пустой

(DEFUN NULL (obj)

(EQL obj NIL)

)

; value – «точка», значение параметра многочлена

; lst – список коефициентов

; рекурсивно считаем значение: умножаем на value и прибавляем очередной коефициент

(DEFUN GORNER (value lst)

((NULL (CDR lst)) (CAR lst))

(+ (* value (GORNER value (CDR lst))) (CAR lst))

)


 

Задача ШІ-3

На мові програмування Лісп написати функцію REVERSELIST – обертання списку з підсписками.

 

;проверяет или obj пустой

(DEFUN NULL (obj)

(EQL obj NIL)

)

;рекурсивно соединяет два списка

(DEFUN APPEND (lst1 lst2)

((NULL lst1) lst2)

((NULL lst2) lst1)

(CONS (CAR lst1) (APPEND (CDR lst1) lst2))

)

;рекурсивно реверсим список: реверсим хвост и аппендим голову

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

(DEFUN REVERSE_ALL (lst)

((NULL lst) NIL)

((ATOM (CAR lst))

(APPEND (REVERSE_ALL (CDR lst)) (CONS (CAR lst) NIL))

)

(APPEND (REVERSE_ALL (CDR lst)) (CONS (REVERSE_ALL (CAR lst)) NIL)))


 

Задача ШІ-4

На мові програмування Лісп написати функцію швидкого сортування для вхідного списку чисел.

 

(defun listLT (N L); возвращает список из элементов L, которые < N

(if (null L)

nil; если список пустой, возвращаем nil

(if (< (car L) N)

(cons (car L) (listLT N (cdr L))); включаем голову в результат

(listLT N (cdr L)); не включаем голову в результат

)

)

)

(defun listNLT (N L); возвращает список из элементов L, которые >= N

(if (null L)

nil; если список пустой, возвращаем nil

(if (> (car L) N)

(cons (car L) (listLT N (cdr L))); включаем голову в результат

(listLT N (cdr L)); не включаем голову в результат

)

)

)

(defun qsort(L)

(if (null L)

Nil

(append; встроенная функция, склеивающая списки

(qsort (listLT (car L) (cdr L)))

(cons (car L) nil); делаем элемент списком, для функции append

(qsort (listNLT (car L) (cdr L)))

)

)

)

 


 

Задача ШІ-5

На мові програмування Лісп написати функцію (PRNUM2 num), яка перетворює десяткове представлення числа num у двійкове.

 

(DEFUN NULL (obj)

(EQL obj NIL)

)

; апендит два списка

(DEFUN APPEND (lst1 lst2)

((NULL lst1) lst2)

(CONS (CAR lst1) (APPEND (CDR lst1) lst2))

)

;реверсит список

(DEFUN REVERSE (lst)

((NULL lst) NIL)

(APPEND (REVERSE (CDR lst)) (CONS (CAR lst) NIL))

)

;по числовому значению строит список двоичного представления начиная с меньших разрядов

(DEFUN BASE_TWOL (value)

((ZEROP value) NIL)

((= (MOD value 2) 1)

(CONS 1 (BASE_TWOL (/ (- value 1) 2)))

)

(CONS 0 (BASE_TWOL (/ value 2)))

)

;проверяет что value числовое, проверяет на 0, если отрицательное начинает список с минуса, сроит base_twol и реверсит

(DEFUN BT (value)

((NOT (INTEGERP value)) NIL)

((ZEROP value) 0)

((< value 0)

(CONS '- (REVERSE (BASE_TWOL (* value -1))))

)

(REVERSE (BASE_TWOL value))

)

 


 




Дата добавления: 2015-09-12; просмотров: 11 | Поможем написать вашу работу | Нарушение авторских прав

Задача БД-5 | Задача ОГ-2 | Задача ОГ-4 | Сформулюйте алгоритм пошуку недосяжних станів в скінченому автоматі. | Решение. | Сформулюйте алгоритм пошуку e-нетерміналів для КВ-граматики. | Сформулюйте алгоритм пошуку множини ліворекурсивних нетерміналів. | Сформулюйте алгоритм пошуку Follow k(Аi), АiÎ N. | Задача ТО-2 |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав