我想写一个程序来解决这个问题 this game . 你不必为这个问题检查它。
牧师、车夫、医生、小丑、机器人专家、安全官员
他们共享以下角色:
我的想法是以角色(人)的形式使用事实 核武器(牧师)。
问题是,我怎样才能建立一个规则,当一个人有一个特定的角色,那么
我想如果你用这种形式的谓词会容易些 hasRole(Person, Role)
hasRole(Person, Role)
要确保一个人只有一个角色:
hasSingleRole(Person, Role) :- hasRole(Person, Role), \+ ((hasRole(Person, Role2), Role \= Role2)).
同样,为了确保角色是唯一的:
hasUniqueRole(Person, Role) :- hasRole(Person, Role), \+ ((hasRole(Person2, Role), Person\= Person2)).
也可以用同样的方法处理 role(Person) 格式,但它要求您显式列出所有角色并执行一些元编程。
role(Person)