このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1311089619/715
#  [1] 授業単元:C言語 
#  [2] 問題文:1358をを並び替えた数字を24通り表示させるプログラムを完成させない。  
#  

'1358を並び替えた数字を24通り表示させる' :-
        findall(L,順列([1,3,5,8],4,L),LL),
        length(LL,24),
        append(_,[L|R],LL),
        writef('%t %t %t %t\n',L),
        R = [],!.
'1358を並び替えた数字を24通り表示させる' :-
        length(LL,24),
        findall(L,順列([1,3,5,8],4,L),LL1),
        append(LL,_,LL1),
        append(_,[L|R],LL),
        writef('%t %t %t %t\n',L),
        R = [],!.

順列(Y,0,[]).
順列(Y,N,[A|X]) :-
        del(Z = Y - A),
        M is N - 1,
        順列(Z,M,X).

del(A,[A|X],X).
del(A,[B|X],[B|Y]) :-
        del(A,X,Y).

del(X = [A|X] - A).
del([B|Y] = [B|X] - A) :-
        del(Y = X - A).