如何在prolog中解决这个逻辑难题?

时间:2018-06-19 08:12:22

标签: prolog logic puzzle

  1. A,B,C,D,E,F是一个清单。
  2. C在E
  3. 之前
  4. A在F
  5. 之后
  6. E不在第五个
  7. E和A之间有两个
  8. B为E后,B与E
  9. 相邻

    哪一个是第四个?

1 个答案:

答案 0 :(得分:1)

最后我自己解决了这个问题

before(A,B) :- A<B.
after(A,B) :- A>B.
notInFifth(A) :- A \= 5.
adjacent(A,B) :- abs(A - B) =:= 1.
separatedByTwo(A,B) :- abs(A - B) =:= 2.


solution(A,B,C,D,E,F) :-
    permutation([1,2,3,4,5,6], [A,B,C,D,E,F]),
    notInFifth(E),
    separatedByTwo(D,A),
    adjacent(B,E),
    before(C,E),
    before(F,A),
    before(E,B).

列表为:c e b d f a