list - Prolog:findall,但只保存一些解决方案
问题描述
我发现对于 swi-prolog 它存在 findnsols,但是,它对我不起作用。
我为htmlpredicate generate_color(Color)
生成随机颜色。
当我尝试调用它 N 次并将执行的值保存在一个列表中时,我总是得到一个结果而不是多个结果。
findnsols(3, Color, generate_color(Color),Colors).
颜色 = [“# 4c4b43”]。
findnsols(3, Color, generate_color(Color),Colors).
颜色 = [“# 158955”]。
findnsols (300, Color, generate_color (Color), Colors).
颜色 = [“# 5d67e1”]。
有谁知道我什至可以在列表中获得我想要的 Nsolutions 的任何方式?
预期输出:
findnsols(3, Color, generate_color(Color),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|...].
推荐阅读
- python - Python Pandas:如何在给定条件的情况下基于另一列创建列?
- c - C: getopt_long() 总是返回无效选项
- task - 瀑布模型
- java - 在java中移动后删除图像
- javascript - “Function”类型的参数不能分配给“ComponentType”类型的参数
' - abap - 从内部表中删除记录并提交每 5000 条记录
- java - 内联创建自定义对象列表,没有单独的模型类 - java
- reactjs - React Router v6 - 没有 Outlet 的嵌套路由
- python - 查看历史记录时,“NoneType”对象不可下标
- amazon-web-services - 如何阅读红移查询计划?