このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/226
#  [1] 授業単元:アルゴリズム 
#  [2] 問題文: 
#  重複順列についてです。 
#  A〜Gなどの7つ以上の要素から、6つ取り出して並べるときの、全ての組み合わせを出す。 
#  例)AAAAAA, 
#  AAAAAB, 
#  AAAAAC,... 
#  AAAABA,... 
#  (実際に全て出さなくても、出すことができるコードが出来ていれば可) 
#                 
#  

'A〜Gなどの7つ以上の要素から、6つ取り出して並べるときの、全ての組み合わせを出す。' :-
        'A〜Gなどの7つ以上の要素の入力'(_7つ以上の要素ならび),
        重複順列(_7つ以上の要素ならび,6,_重複順列),
        writef('%t%t%t%t%t%t\n',_重複順列),
        fail.
'A〜Gなどの7つ以上の要素から、6つ取り出して並べるときの、全ての組み合わせを出す。'.

'A〜Gなどの7つ以上の要素の入力'(_7つ以上の要素ならび) :-
        write('7つ以上の要素を空白区切りで一行で入力してください : '),
        readln(_7つ以上の要素ならび),
        length(_7つ以上の要素ならび,Len),
        len >= 7.

重複順列(L,0,[]).
重複順列(L,N,[A|R3]) :-
        N > 0,
        重複せず要素を取り出す(L,A),
        N_1 is N - 1,
        重複順列(L,N_1,R3).

重複せず要素を取り出す(L,E) :-
        append(L0,[E|_],L),
        \+(append(_,[E|_],L0)).