Prologに投稿されたコード一覧
% can_unify/2% 「can_unify(X, Y) が成功する」⇔「X = Y が成功する」、ただし単一化は行われない。can_unify(X, Y) :-setof(Z, (Z = X, X = Y), [_|_]).
% テストデータls([a:1, a:1, a:2, b:2]).% 定義1 - 等号の失敗を使って排除remove_v1(_, [], []).
natural(0).natural(s(N)) :- natural(N).natural(0, 0).natural(s(N), X) :- number(X), !, X > 0, X1 is X - 1, natural(N, X1). % N によって変項 X を単一化させる場合
mylength([], 0).mylength([_|T], N) :- mylength(T, N1), N is N1 + 1.零リスト([]).零リスト([0|T]) :- 零リスト(T).
順列(Y,0,[]).順列(Y,N,[A|X]) :- del(A,Y,Z), M is N - 1, 順列(Z,M,X).del(A,[A|X],X).del(A,[B|X],[B|Y]) :- del(A,X,Y).
remove1(E, [E|Tail], Tail).remove1(E, [X|Tail], [X|List]) :- remove1(E, Tail, List).permutation([], []).permutation(List, [H|Tail]) :- remove1(H, List, List1), permutation(List1, Tail).
一要素置換([Bef|Tail], [Aft|Tail], (Bef, Aft)).一要素置換([X|BefTail], [X|AftTail], Replace) :-一要素置換(BefTail, AftTail, Replace).% デジタル文字の定義
% File : queens.pl% Updated: 14 February 2008% Purpose: N-Queen Puzzle (posed by Franz Nauch, 1850)main :-