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

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

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

Помогите решить задачку: Левин, Митерев и Набатов работают в банке в качестве бухгалтера, кассира и счетовода. Если Набатов-кассир, то Митерев-счетовод. Если Набатов-счетовод, то Митерев-бухгалтер. Если Митерев-не кассир, то Левин-не счетовод. Если Левин-бухгалтер, то Набатов-счетовод. Кто какую должность занимает?
Мое решение такое:
Листинг программы
  1. member(X, [X|T]).
  2. member(X, [_|T]) :-member(X, T).
  3. assertion1(L,M,N):- N=kassir,!,M=schet.
  4. assertion2(L,M,N):- N=schet,!,M=buh.
  5. assertion3(L,M,N):- M=not(kassir),!,L=not(schet).
  6. assertion4(L,M,N):- L=buh,!,N=schet.
  7. assertion5(L,M,N):- N=schet.
  8.  
  9. assertion1(_,_,_).
  10. assertion2(_,_,_).
  11. assertion3(_,_,_).
  12. assertion4(_,_,_).
  13. assertion5(_,_,schet).
  14. 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).
  15. ?-solve(L,M,N),write(L),nl,write(M),nl,write(N),nl.
Но не уверен, что верное. Нашел что задача не имеет однозначного решения, поэтому надо добавить еще одно условие, им стало то, что Набатов-счетовод.

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

textual
Листинг программы
  1. assertion1(L,M,N):-N=kassir,!,M=schet.
  2. assertion11(L,M,N):-M=schet,!,N=kassir.
  3. assertion2(L,M,N):- N=schet,!,M=buh.
  4. assertion22(L,M,N):-M=buh,!,N=schet.
  5. assertion3(L,M,N):-M=not(kassir),!,L=not(schet).
  6. assertion33(L,M,N):-L=not(schet),!,M=not(kassir).
  7. assertion4(L,M,N):- L=buh,!,N=schet.
  8. assertion44(L,M,N):-N=schet,!,L=buh.
  9.  
  10. assertion1(_,_,_).
  11. assertion2(_,_,_).
  12. assertion3(_,_,_).
  13. assertion4(_,_,_).
  14. assertion11(_,_,_).
  15. assertion22(_,_,_).
  16. assertion33(_,_,_).
  17. assertion44(_,_,_).
  18.  
  19. notravn(L,M,N):- L\=M,N\=M,L\=N,!.
  20.  
  21. solve(L,M,N):- List=[kassir,schet,buh],
  22. member(L,List),member(M,List),member(N,List),
  23. assertion1(L,M,N),assertion11(L,M,N),
  24. assertion2(L,M,N),assertion22(L,M,N),
  25. assertion3(L,M,N),assertion33(L,M,N),
  26. assertion4(L,M,N),assertion44(L,M,N),notravn(L,M,N).
  27. ?-solve(L,M,N),write(L),nl,write(M),nl,write(N),nl.

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут