このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1370255305/321
#  総当りをする関数を作成して下さい 
#   
#  VC++2010 
#  Windows Vista Home SP2 
#   
#  例 
#  第1引数 総当りの初めの文字 
#  第2引数 総当りの最後の文字 
#  第3引数 総当りする桁数 
#  func('a', 'z', 3); 
#  とした時の動作は 
#  aaa〜zzz、aa〜zz、a〜z 
#  の全てを出力するようにしたいです 
#   
#  よろしくお願いします 
# 
# 

総当り(_総当りの初めの文字,_総当りの最後の文字,_総当りする桁数,_総当り) :-
        文字ならびを確定する(_総当りの初めの文字,_総当りの最後の文字,_文字ならび),
        総当り(_総当りする桁数,_文字ならび,_総当り).


総当り(1,_文字ならび,_文字ならび).
総当り(_桁数,_文字ならび,_総当り) :-
        _桁数 > 1,
        _桁数_1 is _桁数 - 1,
        総当り(_桁数_1,_文字ならび,_総当り_2),
        総当り_2(_文字ならび,_総当り_2,_総当り).

総当り_2(_文字ならび,_総当り_2,_総当り) :-
        findall(_文字列,(
                    member(_文字_1,_文字ならび),
                    member(_文字列_2,_総当り_2),
                    atom_concat(_文字_1,_文字列_2,_文字列)),
                _総当り_1),
        append(_総当り_1,_総当り_2,_総当り).

文字ならびを確定する(_総当りの初めの文字,_総当りの最後の文字,_文字ならび) :-
        char_code(_総当りの初めの文字,_総当りの初めの文字コード),
        char_code(_総当りの最後の文字,_総当りの最後の文字コード),
        findall(_文字,(
                    between(_総当りの初めの文字コード,_総当りの最後の文字コード,_文字コード),
                    char_code(_文字,_文字コード)),
                _文字ならび).