fork(3) download
  1. last([X], X).
  2. last([_|T], X) :- last(T, X).
  3.  
  4. forth([_,_,_,F|_], F).
  5.  
  6. matching_forth([], _, 0).
  7. matching_forth([H|T], X, R) :- forth(H, X), matching_forth(T, X, RR), R is RR + 1.
  8. matching_forth([_|T], X, R) :- matching_forth(T, X, R).
  9.  
  10. my_membership([], [], _).
  11.  
  12. my_membership([H|T], [H|R], A) :- last(H, X), matching_forth(A, X, C), C > 1, my_membership(T, R, A).
  13.  
  14. my_membership([_|T], R, A) :- my_membership(T, R, A).
  15.  
  16. my_membership(L, R) :- my_membership(L, R, L).
  17.  
  18.  
  19. :- my_membership([[1, 2, 3, 2], [1, 3, 4, 3], [1, 4, 5, 4], [2, 3, 5, 6], [1, 5, 6, 5],
  20. [2, 4, 6, 8], [1, 6, 7, 6], [2, 5, 7, 10], [3, 4, 7, 12], [2, 6, 8, 12]], X), write(X), nl.
Success #stdin #stdout #stderr 0.02s 6160KB
stdin
Standard input is empty
stdout
[[2, 3, 5, 6], [1, 6, 7, 6], [3, 4, 7, 12], [2, 6, 8, 12]]
stderr