gpt4 book ai didi

list - Prolog:从列表中随机选择规则并传递参数

转载 作者:行者123 更新时间:2023-12-02 06:57:46 25 4
gpt4 key购买 nike

我正在尝试编写 prolog 代码以从列表中选择一个随机规则,然后执行它。这是我让它工作的程度:

/* Rules */
rule1 :- write('1').
rule2 :- write('2').
rule3 :- write('3').

/* List of rules */
list([rule1,rule2,rule3]).

/* Rule to select random rule from list */
findRule :- random_between(0,2,Elem),
list(L),
nth0(Elem,L,Rule),
Rule.

产生(例如)这个结果:

|: findRule.
2
true.

但是,我想将参数传递给规则,例如:

/* Rules */
rule1(X) :- write(X), write('1').
rule2(X) :- write(X), write('2').
rule3(X) :- write(X), write('3').

/* List of rules */
list([rule1,rule2,rule3]).

/* Rule to select random rule from list */
findRule(X) :- random_between(0,2,Elem),
list(L),
nth0(Elem,L,Rule),
Rule(X).

要产生这样的结果:

|: findRule(hallo).
hallo2
true.

这是行不通的。我已经考虑过用动态列表尝试同样的事情,但我想先检查一下,是否有更简单的问题解决方案..

最佳答案

使用call/2为了满足最后一个目标:

findRule(X):-
random_between(0,2,Elem),
list(L),
nth0(Elem,L,Rule),
call(Rule,X).

关于list - Prolog:从列表中随机选择规则并传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27838667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com