[[
✎ pl:miw:miw08_prolog_xml:prolog_api
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
===== API ===== ==== Wersja 1 - płaska struktura ==== <code prolog> delete(A, [A|B], B). delete(B, [A|C], [A|D]) :- delete(B, C, D). add(A, B, [A|B]). make_node(Name,List) :- add(element(Name, [], []), [], List), X=..List, assert(X), write(List). make_node(Name, Attr, Cont, List) :- add(element(Name, Attr, Cont), [], List), X=..List, assert(X), write(List). add_child(Parent,Child,Nlist):- element(Parent,A,C), retract(element(Parent,A,C)), add(element(Child,[],[]),C,L), make_node(Parent,A,L,Nlist). add_child(Parent,Child,Ch_att,Ch_cont,Nlist):- element(Parent,A,C), retract(element(Parent,A,C)), add(element(Child,Ch_att,Ch_cont),C,L), make_node(Parent,A,L,Nlist). make_list(List) :- bagof(A,element(A,B,C),A), L=..A, add(element(L,B,C),[],List), write(List). save :- tell('wiedza.pl'), listing(element), told. prolog2xml(List,File):- tell(File), open(File,write,S), xml_write(S,List,[]), told, close(S). ---------------------------------- add_child(Parent,Child,Nlist):- element(Parent,A,C), element(Child,Chatt,Chcont), retract(element(Parent,A,C)), retract(element(Child,Chatt,Chcont)), add(element(Child,Chatt,Chcont),C,L), make_node(Parent,A,L,Nlist). add_child(Parent,A,Child,Chatt,Nlist):- element(Parent,A,C), element(Child,Chatt,Chcont), retract(element(Parent,A,C)), retract(element(Child,Chatt,Chcont)), add(element(Child,Chatt,Chcont),C,L), make_node(Parent,A,L,Nlist). </code> ==== Wersja 2 ==== === Predykaty pomocnicze === <code prolog> add(A, B, [A|B]). add2end(X,[H|T],[H|NewT]):-add2end(X,T,NewT). add2end(X,[],[X]). append([], A, A). append([A|B], C, [A|D]) :- append(B, C, D). remove(A, [A|B], B). remove(B, [A|C], [A|D]) :- remove(B, C, D). belongs(*,[]). belongs(X,[X|_]). belongs(X,[_|Yogon]) :- belongs(X,Yogon). first(E,L) :- append([],[E|_],L). take1(1,[X|_],X). take1(X,[_|T],Z):- Y is X-1, take1(Y,T,Z). take(X,L):- belongs(X,L), assert(X), write(X). max([], A, A). max([H|T], A, M) :- H > A, max(T, H, M). max([H|T], A, M) :- H =< A, max(T, A, M). </code>
pl/miw/miw08_prolog_xml/prolog_api.1211745653.txt.gz
· ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry