このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/93
#  [1] 授業単元: C言語 
#  [2] 問題文:正の整数m,n(m>n)があるとき、 
#        順列mPnを計算するプログラムの作成。 
#  

'正の整数m,n(m>n)があるとき、順列mPnを計算する'(_mPn) :-
        findall(N,between(1,_m,N),L),
        count(順列(L,_n,_),_mPn).


count(P,N) :-
        findall(1,P,L),
        length(L,N).

順列(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).