Логическая задача на TurboProlog
Формулировка задачи:
Здравствуйте, помогите пожалуйста написать задачу на TurboProlog. Для четырех дружинников, фамилии которых начинаются буквами А, Е, Р, С, необходимо составить график дежурств на четыре вечера подряд, учитывая, что:
1) С и Р не могут дежурить в первый вечер в связи с командировкой:
2) если С выйдет во второй вечер или Р — в третий, то Е сможет подежурить в четвертый;
3) если А не будет дежурить в третий вечер, то Е согласен дежурить во второй вечер;
4) если Р в четвертый вечер уедет на конференцию, то А придется дежурить в первый, а С в третий вечер.
Ошибка 404 undeclared predicate or misspelling
мой код не работает
Листинг программы
- domains
- slist=string*
- man=m(string,string).
- men=man*
- predicates
- permutation(slist,slist).
- insert(string,slist,slist).
- solve(men).
- z(string,string).
- check1(string,string,string,string).
- clases
- insert(X,L,[X|L]).
- insert(X,[H|Tail],[H|NewTail]):-insert(X,Tail,NewTail).
- permutation([],[]).
- permutation([H|Tail],P):-permutation(Tail,PTail),insert(H,PTail,P).
- check1([N,_,_,_]):-N<>"c";N<>"p".
- check1([_,D,B,"e"]):-C="c";B="p".
- check1([_,"e",M,_]):-M<>"a".
- check1(["a",_,"e",H]):-h<>"p".
- solve(S):-
- permutation(["a","e","p","c"],S),
- check1(S).
Решение задачи: «Логическая задача на TurboProlog»
textual
Листинг программы
- check2([_,С,B,"e"]) :- !,
- D="c";B="p".
- check2(_).
- check3([_,"e",M,_]) :- !,
- M<>"a".
- check3(_).
- check4(["a",_,"e",H]) :- !,
- H<>"p".
- check4(_).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д