Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > ПОМОЩЬ СТУДЕНТАМ > Задача два кувшина с водой. Поиск в глубину.Решение на языке prolog(swi-prolog)


Автор: TigerMoonz 25.11.20, 10:35
Всем доброго времени суток!Требуется написать код,который решает данную задачу "Два кувшина с водой. Поиск в глубину" на swi-prolog.

Имеется два кувшина вместимостью 5 и 8 л, и необходимо отмерить 4 литра из
бочки с водой (воды в бочке неограниченно много). Возможными операциями являются:
1) наполнение кувшина водой из бочки (кувшин наполняется полностью);
2) выливание
содержимого кувшина в бочку;
3) переливание из одного кувшина в другой до полного опустошения первого, либо до полного заполнения второго.
Указания к решению. Различные состояния этой задачи задаются информацией,сколько воды в первом кувшине и сколько во втором. Поэтому структура state(Объем_воды_в_первом_кувшине, Объем_воды_во_втором_кувшине) описывает состояние задачи. Начальное состояние state(0, 0), конечные состояния – state(_,4) или state(4,_).

Срок выполнения 5 дней.Оплата договорная.Если вас заинтересовал заказ,то просьба писать мне в лс на этом форуме или ниже в этой теме.

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    % Алгоритм поиска в глубину,который можно использовать(по желанию)
    solve(Start,Solve):- % Start - начальная вершина, Solve - искомый путь
     depth([],Start,Solve).
     
    depth(P,X,[X|P]):-
     goal(X). % этот предикат проверяет,
     % является ли вершина целевой
     
     depth(P,X,Solve):-
     next(X,X1),
     not(member(X1,P)),
     depth([X|P],X1,Solve).

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)