【发布时间】:2010-10-15 08:32:00
【问题描述】:
如果我有以下谓词door,它声明两个房间之间有一扇门:
door(office, hall).
door(kitchen, office).
door(hall, "dining room").
door(kitchen, cellar).
door("dining room", kitchen).
以及声明门状态的谓词doorstate:
doorstate(hall, office, closed).
doorstate(hall, "dining room", opened).
doorstate("dining room", kitchen, opened).
doorstate(kitchen, office, opened).
doorstate(kitchen, cellar, opened).
如果两个房间之间的所有门都打开,则它们之间有一条通道。
如何编写规则来发现两个房间之间是否存在这样的通道?
【问题讨论】:
-
如果我有编辑能力,我会在“饭厅”周围加上单引号。否则是语法错误。另外,我会在每个逗号后加一个空格,否则会不一致且不可读。
-
修正了语法。也克服了热情并调整了语言。
-
@Matthew:“饭厅”是一个(序列化的)列表,“饭厅”是一个原子。所以,我会把“饭厅”改成“饭厅”,因为例如厨房在类型上等同于“厨房”。 ;)
标签: prolog