如何编写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中写一个程序,如果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)