(1)
% substitute(Old,New,OldTerm,NewTerm) :-
% NewTermは,OldTerm中のOldをNewに置き換えたものである.
substitute(Old,New,Old,New) :- !.
substitute(Old,New,Term,Term) :-
atomic(Term), !.
substitute(Old,New,Term,Term1) :-
functor(Term,F,N),
functor(Term1,F,N),
substitute(N,Old,New,Term,Term1).
substitute(N,Old,New,Term,Term1) :-
N > 0,
!,
arg(N,Term,Arg),
substitute(Old,New,Arg,Arg1),
arg(N,Term1,Arg1),
N1 is N-1,
substitute(N1,Old,New,Term,Term1).
substitute(0,Old,New,Term,Term1).
(2)
% select(X,Xs,Ys) :-
% YsはリストXsの一番初めに出てきたXを
% 削除したリストである.
select(X,[X|Xs],Xs) :- !.
select(X,[Y|Ys],[Y|Zs]) :- select(X,Ys,Zs).
0 件のコメント:
コメントを投稿