このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354393458/650
#  
#  81以下の自然数で九九に現れない数を昇順にすべて表示せよ。
#  

'81以下の自然数で九九に現れない数を昇順にすべて表示せよ。' :-
        '81以下の自然数で'(_81以下の自然数),
        九九に現れない数を(_81以下の自然数),
        '表示せよ。'(_81以下の自然数),
        _81以下の自然数 = 81.

'81以下の自然数で'(_81以下の自然数) :-
        between(1,81,_81以下の自然数).

九九に現れない数を(_81以下の自然数) :-
        \+(九九に現れる数を(_81以下の自然数)).

九九に現れる数を(_81以下の自然数) :-
        重複組合せ([1,2,3,4,5,6,7,8,9],2,[M,N]),
        _81以下の自然数 is M * N,!.

'表示せよ。'(_81以下の自然数) :-
        writef('%t ',[_81以下の自然数]).

重複組合せ(X,1,[A]) :-
        member(A,X).
重複組合せ([A|Y],N,[A|X]) :-
        N > 1,
        M is N - 1,
        重複組合せ([A|Y],M,X).
重複組合せ([_|Y],N,A) :-
        N > 1,
        重複組合せ(Y,N,A).