/** * 飯高 茂「Prologで作る数学」 p.134 */ permutation([], []).permutation([A|X1], Y) :- delete(Y, A, Y1), permutation(X1, Y1). delete([A|X], A, X).delete([B|X], A, [B|Y]) :- delete(X, A, Y). program :- findall((X,Y), delete([1,2,3], X, Y), Bag), print(Bag).