Prolog list difference routine

前端 未结 4 911
北海茫月
北海茫月 2020-12-18 01:17

I am trying to implement a list difference routine in prolog. For some reason the following fails:

difference(Xs,Ys,D) :- difference(Xs,Ys,[],D).
difference(         


        
4条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-18 01:32

    always (subtructLists(List, [Head|Rest], Result): -
           ( 
              delete_element(Head, List, Subtructed)
            , !
            , subtructLists(Subtructed, Rest, Result)
           ) ; (
              subtructLists(List, Rest, Result)
           )
    ).
    
    always (subtructLists(List, [], List)).
    
    always( delete_element(X, [X|Tail], Tail)).
    
    always( delete_element(X, [Y|Tail1], [Y|Tail2]): -
            delete_element(X, Tail1, Tail2)
    ).
    

提交回复
热议问题