gpt4 book ai didi

list - Prolog:findall 但只保存一些解决方案

转载 作者:行者123 更新时间:2023-12-04 07:28:08 25 4
gpt4 key购买 nike

我找到了 that for swi-prolog it exists findnsols ,但是,它对我不起作用。
我的 predicate generate_color(Color) 生成随机颜色.
当我尝试调用它 N 次并将执行的值保存在一个列表中时,我总是得到一个结果而不是多个结果。

findnsols(3, Color, generate_color(Color),Colors).

Colors = ["# 4c4b43"].

findnsols(3, Color, generate_color(Color),Colors).

Colors = ["# 158955"].

findnsols (300, Color, generate_color (Color), Colors).

Colors = ["# 5d67e1"].


有谁知道我什至可以在列表中获得我想要的 Nsolution 的任何方法?
预期输出:
findnsols(3, Color, generate_color(Color),Colors).

Colors = ["# 5d67e1", "# 4c4b43", "# 158955"].

最佳答案

我假设 generate_color仅返回单一颜色(即,在给出第一个解决方案后,您不能按 ;)。
因此,findnsols不起作用,因为它基于回溯工作,即再次输入您的目标并尝试找到进一步的解决方案。
我建议类似于以下的解决方案:

length(Colors, 10), maplist(generate_color, Colors).
这定义了一个列表 Colors长度为 10,其中所有条目必须对应于 generate_color (更多信息见 maplist )

相关示例: random生成单个随机数。
?- findnsols(3, N, random(0, 100, N), Rands).
Rands = [33].

?- length(Rands, 10), maplist(random(0,100), Rands).
Rands = [85, 92, 81, 66, 98, 15, 74, 95, 56|...].

关于list - Prolog:findall 但只保存一些解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68110260/

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