このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1311089619/70
#  [1] 授業単元:アルゴリズム 
#  [2] 問題文(含コード&リンク): 
#  1〜N(N >= 1)までの、1ずつ増加する等差数列が与えられる、この時のNの階乗通り存在する組み合わせをすべて表示せよ 
#  例) 
#  Nの値: 3 
#  1 2 3  
#  1 3 2  
#  2 1 3  
#  2 3 1  
#  3 1 2  
#  3 2 1  
#  なお、例のような表示順序で無くても良い、すべて表示されているならその表示順序は問わない。 
#  

'1〜N(N >= 1)までの、1ずつ増加する等差数列が与えられる、この時のNの階乗通り存在する組み合わせをすべて表示する'(N) :-
        '1〜N(N >= 1)までの、1ずつ増加する等差数列が与えられる'(N,L),
        'この時のNの階乗通り存在する組み合わせをすべて'(L,N,_順列ならび),
        表示する(_順列ならび).

'1〜N(N >= 1)までの、1ずつ増加する等差数列が与えられる'(N,L) :-
        findall(M,for(1,M,N),L).

'この時のNの階乗通り存在する組み合わせをすべて'(L,N,_順列ならび) :-
        findall(_順列,(
                    順列(L,N,_順列)),
                _順列ならび).

表示する(_順列ならび) :-
        append(_,[_順列|R],_順列ならび),
        concat_atom(_順列,' ',_行表示),
        writef('%t\n',[_行表示]),
        R = [].