通过尝试使用递归模拟Do-while循环来创建任务生成器

时间:2017-04-23 01:06:16

标签: list recursion prolog do-while

尝试使用递归在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'

0 个答案:

没有答案