나는 사실의 데이터베이스를 거치며 각 사실의 숫자를 합하여 목록에 저장하는 규칙을 작성하려고합니다. 구체적으로 말하자면,프롤로그 - 목록에 재귀 적으로 추가하기
두 스테이션간에 이동 소요 시간을 표시하거나 반환하는 Q5에 대한 응답을 기반으로 규칙을 작성하십시오.
답변 질문 5 : 나는 목록을 추가하고 '시간'과를 추가했습니다,하지만 운이있다
time(Station1,Station2) :- overground(Station1,Station2,Time),
overground(Station1,_,Time),
overground(_,Station1,Time).
time(Station2,Station1) :- overground(Station2,Station1,Time),
overground(Station2,_,Time),
overground(_,Station2,Time).
time(Station1,Station2) :- overground(Station1,Station3,Time),
time(Station3,Station2);
overground(Station1,Station3,Time),
time(Station2,Station3).
time(Station1,Station2) :- overground(Station1,_,Time),
overground(_,Station2,Time).
time(Station1,Station2) :- overground(Station2,_,Time),
overground(_,Station1,Time).
.
* 예 해당 세미콜론.
"overground (X, Y, Z)"형식의 모든 지하철역과 시간이있는 파일이 있습니다. 즉 오버 그라운드 (kenton, southkenton, 2). station1, station2, 그리고 1에서 2로 갈 때까지 걸리는 시간을 보여줍니다.
전체 데이터베이스를 탐색하여 X와 Y를 찾고 (5 번 질문 함) 모든 Z를 더합니다. 두 방송국 사이에 방송국 명단에 올릴 수 있습니다.
코드를보다 쉽게 읽을 수 있도록 다시 포맷했습니다. 이것이 실제로 법적 Prolog가 아닌 경우 사과드립니다. 그러나 비례 글꼴로 읽기 코드를 견딜 수 없으며 코드 스 니펫에 가로 스크롤 막대가 싫어합니다. 그래서. 중간에있는 ';'가 세미콜론이나 쉼표로 간주되는 코드를 다시 포맷하는 동안? – sarnold