このディレクトリの索引
#  【 課題 】 
#  入力: int n 
#  出力: List list 
#  n 列の長さを持つすべての順列を辞書式で出力するメソッドを作成せよ。 
#  n=3の時 
#  結果は{123,132,213,231,312,321} 
#  
#  【 形態 】1. Javaアプリケーション(main()で開始) 
#  【 GUI  】なし 
#  【 期限 】11/07/2013 
#  【 Ver  】"1.7.0_11" 
#  
#  よろしくお願いいたします。

'入力: int n
出力: List list
n 列の長さを持つすべての順列を辞書式で出力するメソッドを作成せよ。
n=3の時
結果は{123,132,213,231,312,321}'(_n,_順列ならび) :-
        数字列を生成する(_n,_数字ならび),
        findall(_数値,(
                    順列(_数字ならび,_n,_数字順列),
                    number_chars(_数値,_数字順列)),
                _順列ならび).

数字列を生成する(_n,_数字ならび) :-
        findall(A,(
                    between(1,_n,N),
                    atom_number(A,N)),
                _数字ならび).

順列(_,0,[]).
順列(L,N,[A|R]) :-
        select(A,L,L2),
        N_1 is N - 1,
        順列(L2,N_1,R).