Логическая задача - Prolog (226978)

Узнай цену своей работы

Формулировка задачи:

Помогите решить задачку: Левин, Митерев и Набатов работают в банке в качестве бухгалтера, кассира и счетовода. Если Набатов-кассир, то Митерев-счетовод. Если Набатов-счетовод, то Митерев-бухгалтер. Если Митерев-не кассир, то Левин-не счетовод. Если Левин-бухгалтер, то Набатов-счетовод. Кто какую должность занимает?
Мое решение такое:
Но не уверен, что верное. Нашел что задача не имеет однозначного решения, поэтому надо добавить еще одно условие, им стало то, что Набатов-счетовод.

Решение задачи: «Логическая задача»

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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5