我试图在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)
sal*_*lva 20
shuffle([], B, B).
shuffle([H|A], B, [H|S]) :- shuffle(B, A, S).
Run Code Online (Sandbox Code Playgroud)
在这类问题中,通常困难的部分不是Prolog,而是确定解决它的最简单的递归关系.