このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1255709298/725 
# [1] 授業単元: アルゴリズム[I] 
# [2] 問題文(含コード&リンク):a,b,c,d,eの5文字をアルファベットとして 
#  重複なく4文字をで構成される全てのwordのなかで部分文字列として、 
#  ad,bd,deを含まないものを表示せよ 

'a,b,c,d,eの5文字をアルファベットとして重複なく4文字で構成される全てのwordのなかで部分文字列として、ad,bd,deを含まないものを表示' :- 
    順列([a,b,c,d,e],4,L), 
    \+(append(_,[a,d|_],L)), 
    \+(append(_,[b,d|_],L)), 
    \+(append(_,[d,e|_],L)), 
    atom_chars(_語,L), 
    write_formatted('%t\n',[_語]), 
    fail. 
'a,b,c,d,eの5文字をアルファベットとして重複なく4文字で構成される全てのwordのなかで部分文字列として、ad,bd,deを含まないものを表示'. 

% *** user: '順列' / 3 *** 
順列(Y,0,[]). 
順列(Y,N,[A|X]) :- 
    del(A,Y,Z), 
    M is N - 1, 
    順列(Z,M,X). 

% *** user: del / 3 *** 
del(A,[A|X],X). 
del(A,[B|X],[B|Y]) :- 
    del(A,X,Y).