Списки на Прологе Лекция 6. План 1.Метод поиска в глубину 2.Метод отката после неудачи 3.Отсечение и откат 4.Метод поиска, определяемый пользователем.

Презентация:



Advertisements
Похожие презентации
Списки в языке Пролог. Определение Список упорядоченное множество объектов одинакового типа. Формально это определение соответствует определению массива.
Advertisements

В России Понедельник Понедельник Вторник Вторник Среда Среда Четверг Четверг Пятница Пятница Суббота Суббота Воскресенье Воскресенье.
Понедельник Вторник Среда Четверг Пятница Суббота.
ПОНЕДЕЛЬНИК ВТОРНИК ВТОРНИК СРЕДА СРЕДА ЧЕТВЕРГ
Коррекция познавательных процессов
Sunday [ 'sΛndei ] воскресенье Monday [ 'mΛndei ] понедельник.
БИБЛИОТЕКА РАБОТАЕТ Понедельник с 8.00 по Вторник с 8.00 по Среда с 8.00 по Четверг с 8.00 по Пятница с 8.00 по Суббота Выходной.
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday's the end of the week. Put them all together, in good or stormy weather, Seven days will.
Для учеников детского Оздоровительного центра «школа здоровья 1317» Города Москвы Список.
Логическое программировыание Презентация 5 Списки в Прологе.
ГОУ СОШ 556 г.Сестрорецк. Понедельник –Monday Уроки –викторины, конкурсы среди учащихся 2х-11х классов.
Деревья Лекция 9. План Принадлежность значения дереву Замена в дереве всех вхождений одного значения на другое Подсчет общего количества вершин дерева.
ВЧЕРА СЕГОДНЯ ЗАВТРА Презентация направлена на ознакомление детей с временными понятиями "вчера", "сегодня", "завтра".
Фотошоп Для моих друзей. Фотошоп Участники группы заказывайте фотошоп мы будем рады!!!
Массивы Заполнение и вывод на экран. ОПРЕДЕЛЕНИЕ Массив – это набор однородных данных (чисел, символов, слов), имеющий имя и последовательную нумерацию.
Управление выполнением программы на Прологе Лекция 6.
I'm a new pupil of Green School.. in Green School.
Живут в английском языке семь верных братьев.. Sunday.
Good afternoon!. План урока 1)Повторение звуков 2)Дни недели 3)Составление предложений с названиями Дней недели.
Списки на Прологе (часть 2) Лекция 7. План Сумма, среднее арифметическое элементов списка, поиск минимального значения Сортировка списка (простого обмена,
Транксрипт:

Списки на Прологе Лекция 6

План 1.Метод поиска в глубину 2.Метод отката после неудачи 3.Отсечение и откат 4.Метод поиска, определяемый пользователем

Описание [monday, tuesday, wednesday, thursday, friday, saturday, sunday] ["понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье"] [1, 2, 3, 4, 5, 6, 7] ['п', 'в', 'с', 'ч', 'п', 'с', 'в'] [] DOMAINS = * listI = integer* listR = real* listC = char* lists = string* listL = listI* /*[[1,3,7],[],[5,2,94],[–5,13]]*/

Описание [monday, 1, "понедельник"] DOMAINS element = i(integer); c(char); s(string) listE = element* [i(–15), s("Мама"),c('A'),s("мыла"),c('+'),s("раму"), i(48),c('!')]

Рекурсивное описание списка [1, 2, 3] = [1|[2, 3]] = [1|[2|[3]]] = [1|[2|[3|[ ]]]] = [1,2|[3]] = [1, 2, 3|[]] Определение в нотации Бэкуса-Науэра: Список ::= [ ]|[Элемент *]|[Голова|Хвост] Голова ::= Элемент * Хвост ::= Список

Вычисление длины списка length([], 0). length([_|T], L) :– length(T, L_T), L = L_T + 1. Внешняя цель: length([1,2,3],X).

Проверка принадлежности элемента списку member(X,[X|_]). member(X,[_|T]) :– member(X,T). member2(X,[X|_]). member2(X,[Y|T]):– XY, member2(X,T). member3(X,[X|_]):–!. member3(X,[_|T]):– member3(X,T).

Объединение двух списков conc([ ], L, L). conc([H|T], L, [H|T1]) :– conc(T,L,T1).

Соседние элементы списка neighbors(X,Y,L):– conc(_,[X,Y|_],L). neighbors2(X,Y,L):– conc(_,[X,Y|_],L); conc(_,[Y,X|_],L).

Обращение списка reverse([ ],[ ]). reverse([X|T],Z):– reverse(T,S), conc(S,[X],Z). rev([H|T],L1,L2):– rev(T,[H|L1],L2). rev([ ],L,L). reverse2(L1,L2):– rev (L1,[ ],L2).

Получение элемента списка по его номеру n_element([X|_],1,X). n_element([_|L],N,Y):– N1=N–1, n_element(L,N1,Y).

Удаление всех вхождений заданного значения из списка delete_all(_,[],[]). delete_all(X,[X|L],L1):– delete_all (X,L,L1). delete_all (X,[Y|L],[Y|L1]):– XY, delete_all (X,L,L1).

delete_one(_,[],[]). delete_one(X,[X|L],L):–!. delete_one(X,[Y|L],[Y|L1]):– delete_one(X,L,L1).