rkelem (integer, matrix, integer, integer, matrix)
Даний предикат призначений для зміни елемента в матриці чисел.
step (matrix, integer, integer, integer, integer, integer)
Даний предикат призначено твори спроби ходу.
operate (integer, matrix, integer, integer, integer, integer, integer)
Даний предикат призначений для обробки лабіринту і виведення шляхів.
printline (line, integer)
Даний предикат призначений для виведення рядка з числами у файл.
print (matrix, integer, integer)
Даний предикат призначений для виведення матриці у файл.
Main
Це головний предикат, обгортка для решти предикатів.
Repeat
Даний предикат призначений для організації циклу.
case (matrix, integer, integer)
Даний предикат призначено оперування перебором випадків, використовується в інтерактивному меню.
Опис методів вирішення
Метод рішення являє собою перебір всіх можливих варіантів ходів з початкової клітини в кінцеву, за умови, що клітина, в яку здійснюється переміщення, не є вже пройденої в даному варіанті проходу і знаходиться в межах лабіринту. Ходи будуть відбуватися до тих пір, поки програма не потрапить в кінцеву клітку.
Опис програми
Програма працює наступним чином:
. З задається користувачем вхідного файлу зчитується структура лабіринту, який задається наступним чином:
Тут перше число означає кількість рядків і стовпців, одиниця означає "стіну , а 0 - вільну клітину. Спочатку зчитується перший рядок, потім друга, і т.д.
2. Зчитуються координати клітини відправлення і клітини призначення.
3. Виконується спроба ходу в одну з 8 можливих сторін.
4. Клітка перевіряється на порожнечу.
5. Якщо така клітина не порожня, то спроба вважається незадовільною, і перебір триває.
. Якщо клітина порожня, то вона відзначається позитивним числом, яке означає номер клітини в можливому варіанті шляху.
. Якщо клітина є кінцевою, то лабіринт виводиться в текстовий файл lab. txt у формі матриці, в якій наочним чином видно шлях від початкової клітини до кінцевої. ...