Потім відбувається відкат до першої можливої вЂ‹вЂ‹точці повернення (перехід до 3 пункту).
. Якщо клітина не є кінцевою, то переходимо до 3 пункту.
. Якщо можливих варіантів більше немає, то програма завершує пошук можливих варіантів.
Опис інтерфейсу користувача
Інтерфейс користувача включає в себе діалог з користувачем, у ході якого запитується ім'я файлу, що містить лабіринт, координати клітини відправлення і клітини призначення. Висновок колій проводиться в текстовий файл "lab. txt .
логічне програмування prolog програма
Список використаної літератури
В· Новицька Ю.В. "Основи логічного і функціонального програмування Електронний навчальний посібник.
Додаток
Лістинг програми.
DOMAINS
file = fop
line = integer * = line * (integer, line, line)
getlines (integer, integer, matrix, matrix)
getmatrix (integer, matrix) (line, line, line) (integer, matrix, matrix, matrix) (line, integer, integer) (matrix, integer, integer, integer) (integer, line , integer, line) (integer, matrix, integer, integer, matrix)
step (matrix, integer, integer, integer, integer, integer) (integer, matrix, integer, integer, integer, integer, integer)
printline (line, integer) (matrix, integer, integer) (matrix, integer, integer) (0, Line, Line): -
!. (Cnt, OldList, Line): - (Value), = [Value | OldList], = Cnt - 1, getline (NewCnt, Temp, Line). (0, _, NewMatrix , NewMatrix): -
!. (Cnt, MSize, OldMatrix, NewMatrix): - (MSize, [], Line), = [Line | OldMatrix], = Cnt - 1, getlines (NewCnt, MSize, Temp, NewMatrix). (MSize, OutputMatrix): - (MSize), (MSize, MSize, [], OutputMatrix). ([], OutputList, OutputList): -
!. ([H | T], List, OutputList): -
NewList = [H | List], (T, NewList, OutputList). (0, _, ModifiedMatrix, ModifiedMatrix): -
!. (Cnt, [H | T], TmpMatrix, ModifiedMatrix): - (H, [], ReversedLine), = [ReversedLine | TmpMatrix], = Cnt - 1, reverselines (NewCnt, T, NewMatrix, ModifiedMatrix).
getelemfromline ([H | T], 1, H): -
!. ([H | T], J, Elem): - = J - 1, getelemfromline (T, NewJ, Elem). ([H | T], 1, J, Elem) : -
!, getelemfromline (H, J, Elem). ([H | T], I, J, Elem): - = I - 1, getelem (T, NewI, J, Elem). (Mark, [H | T], 1, [Mark | T]): -