| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Prolog > Помогите пожалуйста создать два списка на Prolog? |
| Автор: strikelon88 6.10.2009, 21:40 |
| помогите пожалуйста сделать два списка по прологу. 1)intersection(List1,List2,intersection) Список intersection включает в себя элементы общие для списков List1 и List2 2)token(Token,List,Delimiters) token представляет собой подсписок списка List ограниченный началом и концом списка и символами указанными в списке delimiters. |
| Автор: Грымзик 7.10.2009, 16:01 |
| Не очень понятно: intersection включает в себя одинаковые элементы на одинаковых местах, тогда ?- intersection([1,2,3,5,5],[5,4,3,5,5,1],X), write(X), nl, fail. intersection(_,[],[]). intersection([],_,[]). intersection([X|Tail1],[X|Tail2],[X|I]):- intersection(Tail1,Tail2,I),!. intersection([_|Tail1],[_|Tail2],I):- intersection(Tail1,Tail2,I). или элементы, которые просто встречаются в обоих списках без повторения, тогда ?- intersection2([1,2,3,5,5],[5,4,3,5,5,1],X), write(X), nl, fail. member(X,[X|_]). member(X,[_|Tail]):-member(X,Tail). intersection2([],_,[]). intersection2([X|Tail],List,[X|I]):- not(member(X,Tail)), member(X,List), intersection2(Tail,List,I),!. intersection2([_|Tail],List,I):- intersection2(Tail,List,I). а вот token ?- token(X,[a,b,c,d,a,c],[a,c]), write(X), nl, fail. member(X,[X|_]). member(X,[_|Tail]):-member(X,Tail). append([],A,A). append([X|Tail],A,[X|NewTail]):- append(Tail,A,NewTail). token(Token,List,Delimiters):- member(D1,Delimiters), member(D2, Delimiters), append(_,[D1|Tail],List), append(Token,[D2|_],Tail). token(Token,List,Delimiters):- member(D1,Delimiters), append(_,[D1|Token],List). token(Token,List,Delimiters):- member(D2, Delimiters), append(Token,[D2|_],List). |
| Автор: strikelon88 8.10.2009, 19:39 |
| БОЛЬШОЕ СПАСИБО!!! четвертый день сидел разбирался, все не получалось а prolog только ошибки выдавал=) |