尝试使用递归在prolog中进行do-while循环以对信息进行排序。需要帮助进展并使循环工作。
如果我必须使用列表,我们将非常感谢有关如何进行此操作的信息。
所以我试图用prolog创建一个任务生成器,但我对语言非常不熟悉。我从概念上知道我想做什么,但不知道如何实际做到这一点。
我想生成并打印一组来自至少2个任务组的任务,并且至少产生3000个exp。我的计划是按任务类型划分,然后递归写入新的任务名称,直到达到exp的总和。 (基本上模拟do while循环)
我只是不知道如何制定初始递归语句。
questsA(qName,exp) :-allQuests(qName,A,exp).
questsB(qName,exp) :-allQuests(qName,B,exp).
questsC(qName,exp) :-allQuests(qName,C,exp).
different(X,X):- !, fail.
different(_,_).
Recur(3000,X,Y,Z):- \\not sure what to put or how to get here
Recur(0,gName1,C,):-
allQuests(qName,C,exp),
Write(qName),
nl,
Recur(exp,gName,C,exp).
Recur(N,gName,C,exp):-
allQuests(gName1,Y,Z),
different(C,Y),
write(gName),
nl,
N is N+Z,
Recur(N,gname,4,Z).
我不知道如何放入测试器,所以我不会在同一个递归循环中重复任务,我想避免使用repeat()谓词。 我很确定我可以用列表完成所有这些,但我不知道如何或从哪里开始。
有关我所需输出的示例: 如果我的数据库是:
allquest('water for village','Main quest', 2000).
allquest('get book for elder','fetch quest',1000).
allquests('kill 20 birds', 'bounty quest', 1000).
输出为
?-'water for village', 'get book for elder'
?-;'water for village','kill 20 birds'