相关疑难解决方法(0)

将谓词应用于列表元素的Prolog映射过程

如何编写map(List, PredName, Result)将谓词应用于PredName(Arg, Res)元素的Prolog过程,并将List结果返回到列表中Result

例如:

test(N,R) :- R is N*N.

?- map([3,5,-2], test, L).
L = [9,25,4] ;
no
Run Code Online (Sandbox Code Playgroud)

prolog meta-predicate map-function

35
推荐指数
1
解决办法
2万
查看次数

在prolog中随机播放

我试图在prolog中写一个程序,如果L1 = [1,2,3]和L2 = [4,5,6]则L3 = [1,4,2,5,3,6]

所以 shuffle([1,2,3],[4,5,6],[1,4,2,5,3,6])

到目前为止我有这个:

shuffle([X],[Y],[X,Y]).
shuffle([X|Xs],[Y|Ys],_) :- shuffle(Xs,Ys,Z), shuffle(X,Y,Z).
Run Code Online (Sandbox Code Playgroud)

这是我编写prolog代码的第一次尝试,所以我仍然试图围绕语法,规则和一切.

我理解逻辑,我只是​​不确定如何实现它所以任何帮助将不胜感激!

谢谢!

编辑:我已经弄清楚了.如果有人感兴趣,这是解决方案:

shuffle([X],[Y],[X,Y]).  
shuffle([X|Xs],[Y|Ys],[Z1,Z2|Zs]) :- shuffle([X],[Y],[Z1,Z2]),shuffle(Xs,Ys,Zs).
Run Code Online (Sandbox Code Playgroud)

prolog

12
推荐指数
1
解决办法
3353
查看次数

标签 统计

prolog ×2

map-function ×1

meta-predicate ×1