Prolog中用于删除的列表操作

Prolog中用于删除的列表操作,prolog,Prolog,任何偶数列表都有两个中间元素 请帮助我编写一个Prolog程序,将偶数列表中的两个中间元素删除到其他列表中 例如,如果我们给出:?-del_-mid_-偶([10,20,30,40,50,60],L1)。 然后它将产生:L1=[10,20,50,60]作为输出。类似于您的: 与您的类似: 你尝试了什么,什么不起作用?@Dev:如果你满意,不要忘记接受答案。你尝试了什么,什么不起作用?@Dev:如果你满意,不要忘记接受答案。很好地使用龟兔算法。:-)学分归TA_intern(),我刚刚了解了这一点

任何偶数列表都有两个中间元素

请帮助我编写一个Prolog程序,将偶数列表中的两个中间元素删除到其他列表中

例如,如果我们给出:
?-del_-mid_-偶([10,20,30,40,50,60],L1)。

然后它将产生:
L1=[10,20,50,60]
作为输出。

类似于您的:

与您的类似:


你尝试了什么,什么不起作用?@Dev:如果你满意,不要忘记接受答案。你尝试了什么,什么不起作用?@Dev:如果你满意,不要忘记接受答案。很好地使用龟兔算法。:-)学分归TA_intern(),我刚刚了解了这一点。很好地使用了龟兔算法。:-)学分归TA_实习生(),我刚刚了解到这一点。
delete_mid2(Ori, Del):-
    delete_mid2(Ori, Ori, Del).

delete_mid2([_,_], [_,_|Slow], Slow).
delete_mid2([_,_|Fast], [H|Slow], [H|Ret]):-    
    delete_mid2(Fast, Slow, Ret).

?- delete_mid2([10,20,30,40,50,60],L).
L = [10, 20, 50, 60] ;
false.

?- delete_mid2([1,2,3,4],L).
L = [1, 4] ;
false.

?- delete_mid2([1,2,3],L).
false.

?- delete_mid2([],L).
false.