2012-05-05 5 views
2

상황이 있습니다 : 저는 프롤로그의 특정 라인에 선언 된 지하 런던의 일부가 없습니다. 나는 여러 대의 역이있는 3 개의 선을 가지고 있으며, 그들은 모두 서로 공통점을 가지고있다.Prolog에서지도의 두 점 사이에 공통점을 찾으려면 어떻게해야합니까?

The map of the underground

나는 인수가 서로 옆에있는 방송국 그들이에 무엇을 줄 수있는 스테이션에 대한 사실이있다. 지도에서 방송국의 전체 목록이 있습니다 :

neighbour(south_kensington,victoria,green). 
neighbour(victoria,westminster,green). 
neighbour(westminster,embankment,green). 
neighbour(embankment,blackfriars,green). 
neighbour(vauxhall,victoria,blue). 
neighbour(victoria,green_park,blue). 
neighbour(green_park,oxford_circus,blue). 
neighbour(oxford_circus,warren_street,blue). 
neighbour(warren_street,euston,blue). 
neighbour(warren_street,tottenham_court_road,black). 
neighbour(tottenham_court_road,leichester_square,black). 
neighbour(leichester_square,charing_cross,black). 
neighbour(charing_cross,embankbent,black). 
neighbour(embankment,waterloo,black). 

문제는 : 나는 (서로 다른 라인에있는) A에서 B로 가고 싶어 씨 프롤로그 내가 변경해야하는 역에서 말을해야 윤곽. 예 : A : Charing Cross; B : 웨스트 민스터; 다음에서 변경 : 제방

+1

이 질문은 숙제 문제와 같지 않습니까? –

+1

예, 실제로는 다음과 같습니다. D –

+1

어디에서 시작해야할지 모르겠다면 책을 다시 읽어야한다는 것을 나타내는 좋은 지표입니다. 진행 상황 (예 : 소스 코드)이 있으면 지키는 질문. –

답변

2

이 문구는 완전히 명확하지 않습니다. 하나의 변경 만있는 경로를 찾고 있습니까, 아니면 여러 가지 변경이 가능합니다.

1) Vauxhall에서 Waterloo로 튜브 부분을 여행하는 것을 고려하십시오. 웨스트 민스터를 경유하는 루트와 워런 스트리트를 경유하는 루트가 하나씩 변경됩니다. 두 경로 모두 허용 되나요, 아니면 둘 중 하나만 허용됩니까?

2) 제방 국 이름의 오타를 이웃 (charing_cross, embankbent, black)으로 수정하십시오.

3) 술어 station_on_line 경우에만 역 세인트가 줄 리에 있으며 쿼리가 정확히 한 번만 각 역을 반환 station_on_line(St,blue)에 대한 것을 확인하고 경우 마찬가지로 station_on_line(victoria,Li) 반환 각 라인 빅토리아를 보유 (세인트 리)를 정의 방송국은 한 번만 켜져 있습니다.

4) 행 L1L2C 스테이션에서 만나는 경우 true가되는 조건부를 정의하십시오. change_at(L1,L2,C)

5) 사례 3) 및 4)는 하나의 변경 만 허용되는 경우, 즉 Vauxhall에서 Westminster를 통한 Waterloo까지의 경로가 1)에서 허용되지 않는 경우 변경할 점을 찾기에 충분합니다.

6) 네트워크에서 임의의 수의 선로가있는 임의의 수의 스테이션을 통과하는 경로를 찾을 수있는 재귀 적 정의를 설계하십시오.

관련 문제