比利时是一个铁道上的国家。1835年5月5日,欧洲大陆开行的第一列火车把首都布鲁塞尔和省会城市梅赫伦连接在了一起。紧接着比利时又修建了大量的铁路,形成了一个密集的铁路网。火车经常晚点,但这并不妨碍人们居住在这个国家的任何一个城市,却在另一个城市工作。因为乘火车去工作,并不比坐公交车从长岛去曼哈顿,或者从墨尔本郊外到墨尔本大学更费时。既然交通的便利性不是问题,因此人们愿意居住在哪个地方是由其它因素决定的。请编写谓词station/1,这个谓词只成功一次,使它的参数合一为最好的一个火车站(也就是最好的城市,因为每座城市只有一个火车站),如果不存在这样一个火车站,谓词失败。
这里:
“小城市”指最多只与两座城市有铁路直连的城市,相应的,大城市与多于两个相邻的城市有铁路直连。
“好城市”总是一个“小城市”,并且它到最近的两个大城市的距离相等(这是为了购物方便)。
“最好的城市”是所有的“好城市”中,与最近的两个大城市距离最短的一个(因为人们不愿意为购物而跑过远的路程)。
两座城市之间的铁路连接由事实rail/2给出,所有铁路都是双向的,而且长度相等。两个城市的距离就是它们之间最短的铁路线长度。
例1:
rail(brussel,mechelen).
rail(brussel,antwerpen).
rail(brussel,gent).
rail(antwerpen,mechelen).
rail(antwerpen,gent).
rail(gent,brugge).
?- station(X).
X = mechelen
例2:
rail(brussel,charleroi).
rail(brussel,haacht).
rail(haacht,mechelen).
rail(mechelen,berchem).
rail(berchem,antwerpen).
rail(brussel,boom).
rail(boom,antwerpen).
rail(antwerpen,turnhout).
?- station(X).
X = boom
这里:
“小城市”指最多只与两座城市有铁路直连的城市,相应的,大城市与多于两个相邻的城市有铁路直连。
“好城市”总是一个“小城市”,并且它到最近的两个大城市的距离相等(这是为了购物方便)。
“最好的城市”是所有的“好城市”中,与最近的两个大城市距离最短的一个(因为人们不愿意为购物而跑过远的路程)。
两座城市之间的铁路连接由事实rail/2给出,所有铁路都是双向的,而且长度相等。两个城市的距离就是它们之间最短的铁路线长度。
例1:
rail(brussel,mechelen).
rail(brussel,antwerpen).
rail(brussel,gent).
rail(antwerpen,mechelen).
rail(antwerpen,gent).
rail(gent,brugge).
?- station(X).
X = mechelen
例2:
rail(brussel,charleroi).
rail(brussel,haacht).
rail(haacht,mechelen).
rail(mechelen,berchem).
rail(berchem,antwerpen).
rail(brussel,boom).
rail(boom,antwerpen).
rail(antwerpen,turnhout).
?- station(X).
X = boom