【发布时间】:2013-04-12 14:51:29
【问题描述】:
我在 Prolog 中有以下谓词:
rules('Archer','NX-01').
rules('Kirk','NCC-1701').
rules('Picard','NCC-1701-D').
rules('Janeway','Voyager').
rules('Almak','IRWTMet').
“Archer”、“Kirk”、“Picard”、“Janeway”和“Almak”是舰船指挥官 'NX-01'、'NCC-1701'、'NCC-1701-D'、'Voyager' 和 'IRWTMet' 是船舶。
所以我想,给定一个船舶列表,返回一个船舶指挥官列表。
我正在尝试这个:
list_ship_commanders([],_).
list_ship_commanders([Ship|T],R):-
findall(Commander,rules(Commander,Ship),R),
list_ship_commanders(T,R).
上述代码仅在 Ship 列表只有一个元素时有效。我正在使用“findall”,但我不确定这是正确的方式。
【问题讨论】:
标签: prolog