Найти строки с общими словами - Prolog

Формулировка задачи:

Здравствуйте. Помогите найти строки с общими словами. Для моего примера это будут: title([война, и, мир]) и title([гражданская, война]).
title([война, и, мир]).
title([мёртвые, души]).
title([а, зори, здесь, тихие]).
title([гражданская, война]).
 
predicat1():- findall(X, title(X), List1),
    predicat2(List1, []).
Добавлено через 5 часов 2 минуты
title([война, и, мир]).
title([мёртвые, души]).
title([а, зори, здесь, тихие]).
title([гражданская, война]).
 
predicat1():- findall(X, title(X), List1), 
    predicat2(List1, []).
 
predicat2([],_).
predicat2([List1,List2|Z],List3):- 
    intersection(List1,List2,R), length(R,0), 
    predicat2([List2|Z],List3); predicat2([List2|Z],[List1,List2|List3]).
 
intersection([X|М1],М2,[X|М]):- 
    member(X,М2),!,intersection(М1,М2,М). 
intersection([X|М1],М2,М):- 
    not(member(X,М2)),!,intersection(М1,М2,М). 
intersection([],_,[]).
Всё что смог. Помогите, please...

Код к задаче: «Найти строки с общими словами - Prolog»

textual
title([а, война, и, мир]).
title([а, мёртвые, души]).
title([а, зори, здесь, тихие]).
title([гражданская, война]).
 
similar_title :-
    setof( Word,
           List^
           ( title(List), member(Word, List) ),
           WordList
         ),
    similar_title_by_word(WordList, SimilarList),
    writeln(WordList),
    ( member(SimilarSolve, SimilarList), writeln(SimilarSolve), fail
    ; true
    ).
 
similar_title_by_word([], []).
similar_title_by_word([Word | WordList], [by(Word, SimilarSolveList) | SimilarList]) :-
    bagof( similar(SimilarSolve),
           ( title(Title1), member(Word, Title1),
             bagof( Title2,
                    ( title(Title2),
                      Title1 @< Title2,
                      member(Word, Title2)
                    ),
                    TitleRest
                  ),
             SimilarSolve = [Title1 | TitleRest]
           ),
           SimilarSolveList
         ),
    !,
    similar_title_by_word(WordList, SimilarList).
similar_title_by_word([_ | WordList], SimilarList) :-
    similar_title_by_word(WordList, SimilarList).

13   голосов, оценка 4.154 из 5


СОХРАНИТЬ ССЫЛКУ