Логическая задача - Prolog (226978)
Формулировка задачи:
Помогите решить задачку:
Левин, Митерев и Набатов работают в банке в качестве бухгалтера,
кассира и счетовода.
Если Набатов-кассир, то Митерев-счетовод.
Если Набатов-счетовод, то Митерев-бухгалтер.
Если Митерев-не кассир, то Левин-не счетовод.
Если Левин-бухгалтер, то Набатов-счетовод.
Кто какую должность занимает?
Но не уверен, что верное.
Нашел что задача не имеет однозначного решения, поэтому надо добавить еще одно условие, им стало то, что Набатов-счетовод.
Мое решение такое:
Листинг программы
- member(X, [X|T]).
- member(X, [_|T]) :-member(X, T).
- assertion1(L,M,N):- N=kassir,!,M=schet.
- assertion2(L,M,N):- N=schet,!,M=buh.
- assertion3(L,M,N):- M=not(kassir),!,L=not(schet).
- assertion4(L,M,N):- L=buh,!,N=schet.
- assertion5(L,M,N):- N=schet.
- assertion1(_,_,_).
- assertion2(_,_,_).
- assertion3(_,_,_).
- assertion4(_,_,_).
- assertion5(_,_,schet).
- solve(L,M,N):- List=[kassir,schet,buh], member(L,List),member(M,List),member(N,List),assertion1(L,M,N),assertion2(L,M,N),assertion3(L,M,N),assertion4(L,M,N),assertion5(L,M,N).
- ?-solve(L,M,N),write(L),nl,write(M),nl,write(N),nl.
Решение задачи: «Логическая задача»
textual
Листинг программы
- assertion1(L,M,N):-N=kassir,!,M=schet.
- assertion11(L,M,N):-M=schet,!,N=kassir.
- assertion2(L,M,N):- N=schet,!,M=buh.
- assertion22(L,M,N):-M=buh,!,N=schet.
- assertion3(L,M,N):-M=not(kassir),!,L=not(schet).
- assertion33(L,M,N):-L=not(schet),!,M=not(kassir).
- assertion4(L,M,N):- L=buh,!,N=schet.
- assertion44(L,M,N):-N=schet,!,L=buh.
- assertion1(_,_,_).
- assertion2(_,_,_).
- assertion3(_,_,_).
- assertion4(_,_,_).
- assertion11(_,_,_).
- assertion22(_,_,_).
- assertion33(_,_,_).
- assertion44(_,_,_).
- notravn(L,M,N):- L\=M,N\=M,L\=N,!.
- solve(L,M,N):- List=[kassir,schet,buh],
- member(L,List),member(M,List),member(N,List),
- assertion1(L,M,N),assertion11(L,M,N),
- assertion2(L,M,N),assertion22(L,M,N),
- assertion3(L,M,N),assertion33(L,M,N),
- assertion4(L,M,N),assertion44(L,M,N),notravn(L,M,N).
- ?-solve(L,M,N),write(L),nl,write(M),nl,write(N),nl.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д