このディレクトリの索引
/*

順列(_,0,[]).
順列(_値ならび,_要素数,[_ある値|_順列]) :-
select(_ある値,_値ならび,_残り値ならび),
succ(_要素数_1,_要素数),
順列(_残り値ならび,_要素数_1,_順列).

*/


順列(_,0,[]).
順列(L,_n,_順列) :-
'_nが1以上の場合_nを減じながら、順列を生成して行く'(L,_n,_順列).


'_nが1以上の場合_nを減じながら、順列を生成して行く'(L,_n,_順列) :-
'_nが1以上の場合_nを減じながら、'(_n,_nより1小さい数),
順列を生成して行く(_nより1小さい数,L,_順列).

'_nが1以上の場合_nを減じながら、'(_n,_nより1小さい数) :-
'_nが1以上の場合'(_n),
'_nを減じながら、'(_n,_nより1小さい数).

'_nが1以上の場合'(_n) :-
_n >= 1.

'_nを減じながら、'(_n,_nより1小さい数) :-
succ(_nより1小さい数,_n).

順列を生成して行く(_nより1小さい数,L,[A|R]) :-
select(A,L,_残りならび),
順列(_残りならび,_nより1小さい数,R).