0

There are 2 middle elements for any even-numbered list.

Help me to write a Prolog program which deletes those 2 middle elements of an even-numbered list into some other list.

Example, if we give : ?- del_mid_even([10,20,30,40,50,60],L1).
then it will produce : L1 = [10,20,50,60] as output.

false
  • 10,264
  • 13
  • 101
  • 209
Dev
  • 576
  • 3
  • 14

1 Answers1

2

Similar to your other question:

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.
DuDa
  • 3,718
  • 4
  • 16
  • 36