2 개의 스테이션이 같은 줄에 있는지, 어떤 줄인지 확인하는 규칙을 만들려고합니다.
예는 다음 규칙가요
sameLine(Stat1, Stat2, Line) :-
station(Stat1, Line),
station(Stat2, Line),
Stat1 \= Stat2.
을 할 수있다. 그것은 역의 몇 확인할 수 있습니다
,하지만 sameLine(Stat1, Stat2, metropolitan)
반환 사실을 두 번 호출 라인의 스테이션 (의 커플을 찾을 수 있습니다 (참 sameLine(aldgate, baker, Line)
수익을 호출하고 metropolitan
와 Line
를 통합, sameLine(aldgate, baker, metropolitan)
반환 진정한 호출) 같은 줄에 Stat1
을 aldgate
및 Stat2
을 baker
(처음으로)으로, 그 반대로 (두 번째로) 통합하면됩니다.
는 제약
Stat1 \= Stat2.
그것은 두 개의 스테이션이 다르다는 것을 강요의 사항을 준수하십시오.
sameLine(aldgate, aldgate, Line)
이 Line
과 metropolitan
으로 통합되면 true를 반환하도록하려면 삭제할 수 있습니다.
당신이 그렇지 않으면, 당신은 Stat1
는 다른 Stat2
이상을 비는 것을 부과 할 수 (sameLine(Stat1, Stat2, metropolitan)
를 호출 예에 의한 aldgate
/baker
및 baker
/aldgate
) 이중 결과를 방지 할뿐만 아니라 그 Stat2
"전에"인 경우, 이런 식으로,
Stat1 @< Stat2
와
Stat1 \= Stat2
를 교체, 당신은,632에서 진정한 취득 10이지만, 거짓 (baker
이 "전에"aldgate
이 아니기 때문에) sameLine(baker, aldgate, Line)
에서.
전혀 시도한 적이 있습니까? 어디에서 시작해야할지 모르시는 경우 Prolog 자습서 (* 예 : *, [Learn Prolog Now] (learnprolognow.org))를 사용해보십시오. – lurker
감사합니다. 사이트를 살펴본 결과 매우 유용했습니다. –