Контрольная работа: Программа выбора оптимального (наикратчайшего) маршрута перемещения в лабиринте

принадлежит (Элемент, [_|Хвост]): – принадлежит (Элемент, Хвост).

/* ПРОВЕРКА ДВУХ ЭЛЕМЕНТОВ НА ПОСЛЕДОВАТЕЛЬНОЕ РАСПОЛОЖЕНИЕ В СПИСКЕ */

посл (Элемент1, Элемент2, [Элемент1, Элемент2|_]).

посл (Элемент1, Элемент2, [_|Хвост]): – посл (Элемент1, Элемент2, Хвост).

/* ПРОВЕРКА: ЯВЛЯЮТСЯ ЛИ КЛЕТКИ СОСЕДНИМИ */

соседние (Клетка1, Клетка2, Линия):-

линия (Линия, Список),

принадлежит (Клетка1, Список), принадлежит (Клетка2, Список),

посл (Клетка1, Клетка2, Список);

линия (Линия, Список),

принадлежит (Клетка1, Список), принадлежит (Клетка2, Список),

посл (Клетка2, Клетка1, Список).

/* ПРОВЕРКА КЛЕТКИ НА ВОЗМОЖНОСТЬ СОВЕРШЕНИЯ ПЕРЕСАДКИ */

переход (Клетка, Линия1, Линия2): – линия (Линия1, Список1), линия (Линия2, Список2),

принадлежит (Клетка, Список1), принадлежит (Клетка, Список2),

Линия1<>Линия2.

/* ПОИСК МАРШРУТА */

маршрут (Клетка, Клетка, [Клетка], 1, Линия,_, Обязательные, КолОбяз): – линия (Линия, Список), принадлежит (Клетка, Список), КолОбяз=0.

% нахождение следующей клетки в маршруте без перехода

маршрут (КлНачал, КлКонеч, [КлНачал, КлНачал2|Хвост], ВесМаршрута1, Линия, Недоступные, Обязательные, КолОбяз1):-

соседние (КлНачал, КлНачал2, Линия),

not (принадлежит (КлНачал2, Недоступные)),

маршрут (КлНачал2, КлКонеч, [КлНачал2|Хвост], ВесМаршрута2, Линия, [КлНачал2|Недоступные], Обязательные, КолОбяз1),

ВесМаршрута1 = ВесМаршрута2 + 1;

соседние (КлНачал, КлНачал2, Линия),

not (принадлежит (КлНачал2, Недоступные)),

принадлежит (КлНачал2, Обязательные),

КолОбяз2 = КолОбяз1 – 1,

маршрут (КлНачал2, КлКонеч, [КлНачал2|Хвост], ВесМаршрута2, Линия, [КлНачал2|Недоступные], Обязательные, КолОбяз2),

К-во Просмотров: 207
Бесплатно скачать Контрольная работа: Программа выбора оптимального (наикратчайшего) маршрута перемещения в лабиринте