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 :-