
4
.docxГУАП
КАФЕДРА № 41
ОТЧЕТ
ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
старший преподаватель |
|
|
|
Е.П. Виноградова |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №4 |
Программирование поисковых алгоритмов |
по курсу: Информатизация и анализ информационных ресурсов общества |
|
|
РАБОТУ ВЫПОЛНИЛА СТУДЕНТКА ГР. |
4716 |
|
|
|
С.А. Янышева |
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург
2021
Цель работы
Изучить способы представления в языке Пролог сложных структур данных, таких как списки, познакомиться со способами создания и использования пользовательских доменов данных, изучить способы реализации типовых поисковых алгоритмов, включая рекурсивные.
Вариант 6
Произвести сдвиг элементов списка (не циклический):
– на одну позицию влево (вправо),
– на N позиций влево (вправо).
ХОД ВЫПОЛНЕНИЯ РАБОТЫ
Запросы:
Сдвиг на одну позицию влево
Сдвиг на 3 позиции вправо
Листинг программы:
build(0,[]).
build(N1,[0|L]):- N1 > 0, N is N1 - 1, build(N,L).
reverse([],Z,Z).
reverse([H|T],Z,Acc) :- reverse(T,Z,[H|Acc]).
cut(L,N,R):- length(X, N), append(R, X, L).
move(L, N, 'left', RES):- reverse(L,L1,[]), move(L1, N, 'right', R1), reverse(R1,RES,[]).
move(L, N, 'right', RES):- cut(L,N,R), build(N,ZER), append(ZER,R, RES).
Выводы
В ходе лабораторной работы была разработана программа, реализующая нециклический сдвиг элементов массива.