gpt4 book ai didi

list - 构建一个长度为 n 的相同值的列表 Prolog

转载 作者:行者123 更新时间:2023-12-05 08:21:11 26 4
gpt4 key购买 nike

我想在 Prolog 中build/3 一个 N 元素的列表,每个元素应该是 X

?- build(30,3,L).  
L = [30,30,30].

在上面花了好几个小时,一直以无限循环结束,或者变量没有正确实例化。

build(_,0,[]).  
build(X,N1,[X]):- N1>0, N1 is N - 1, build(X,N,[]).
build(X,N1,[X|L]) :- N1 > 0, N1 is N - 1, build(X,N,L).

最佳答案

使用元谓词使其非常短:

(1) with maplist/2:创建一个长度为 N 的列表,然后将其所有元素与 X 匹配。

build(X, N, List)  :- 
length(List, N),
maplist(=(X), List).

(2) 使用 findall/3:循环 N 次并使用 X N 次完成 List

build(X, N, List)  :- 
findall(X, between(1, N, _), List).

关于list - 构建一个长度为 n 的相同值的列表 Prolog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427596/

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