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

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

маршрут (КлНачал, КлКонеч, [КлНачал, КлНачал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),

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

/* ВЫВОД МАРШРУТА */

% вывод последней клетки маршрута

write_маршрут([Клетка], Линия): – линия (Линия, Список),

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

% вывод клетки без перехода

write_маршрут([Клетка, Клетка2|Хвост], Линия):-

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

write (Клетка,» –»),

write_маршрут([Клетка2|Хвост], Линия).

% вывод клетки c переходом

write_маршрут([Клетка, Клетка2|Хвост], Линия):-

переход (Клетка, Линия, Новая_Линия),

соседние (Клетка, Клетка2, Новая_Линия),

write (Клетка,» –»),

write_маршрут([Клетка2|Хвост], Новая_Линия).

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