我有这个断言,我似乎无法开始工作。 应使用以下方式使用谓词:为谓词提供事物列表(KnowledgeList)和未实例化的变量(ExtractedList)。 然后谓词应该继续填充ExtractedList。 要填充ExtractedList,它会遍历KnowledgeList的项目, 构建一个新的提取事物列表,并将此列表附加到ExtractedList。
我知道我应该使用递归来解决这个问题,但此刻我感到难过。
extractedKnowledge(KnowledgeList, ExtractedList) :-
list(KnowledgeList),
ExtractedList = [],
length(KnowledgeList,ListLength),
for(X,1,ListLength),
nth(X,KnowledgeList,ListElement),
...?
答案 0 :(得分:0)
由于您将ExtractedList
统一为[]
,因此它始终为空。你应该确实使用递归。这是一个让您入门的骨架递归程序:
% base case: we can only extract 0 items from 0 items
extracted_knowledge([],[]).
% recursive case
extracted_knowledge([Item|Knowledge], Extracted) :-
extracted_knowledge(Knowledge, Extracted0),
% build Extracted from Extracted0 by adding Item,
% if it needs to be extracted