Контрольная работа: Программа выбора оптимального (наикратчайшего) маршрута перемещения в лабиринте
ввод_назв_обяз (0, [], []): – !.
ввод_назв_обяз (1, Обязательные, ВведенныеОбяз):-
write («Введите последнюю обязательную клетку:»),
readln(Клетка),
not (принадлежит (Клетка, ВведенныеОбяз)),
Обязательные=[Клетка],!.
ввод_назв_обяз (КолОбяз, Обязательные, ВведенныеОбяз):-
КолОбяз>1,
write («Введите обязательную клетку:»),
readln(Клетка),
not (принадлежит (Клетка, ВведенныеОбяз)),
КолОбяз2=КолОбяз-1,
ввод_назв_обяз (КолОбяз2, Обязательные2, [Клетка|ВведенныеОбяз]),
Обязательные=[Клетка|Обязательные2],!;
write («Клетка с таким названием уже была введена»),
nl,
ввод_назв_обяз (КолОбяз, Обязательные, ВведенныеОбяз).
ввод_кол_обяз(КолОбяз):-
write («Сколько обязательных клеток Вы хотите ввести:»),
readln(Строка),
str_int (Строка, КолОбяз),!;
write («Необходимо ввести целое число. Пожалуйста, повторите ввод.»),
nl,
ввод_кол_обяз(КолОбяз).
ввод_обяз (Обязательные, КолОбяз): – ввод_кол_обяз(КолОбяз), ввод_назв_обяз (КолОбяз, Обязательные, []).
/* ЗАПУСК ПРОГРАММЫ */
run: – write («Выбор маршрута передвижения в лабиринте с посещением обязательных клеток»), nl,
write («Схему лабиринта можно найти в приложении пояснительной записки»), nl,
write («Введите название начальной клетки =»), readln(КлНачал),