このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1288531658/168
#  【質問テンプレ】 
#  [1] 授業単元:プログラミング設計演習 
#  [2] 問題文(含コード&リンク): 
#  0 から 9 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力して終了するプログラムを作成してください。 
#  n 個の数はおのおの 0 から 9 までとし、1つの組み合わせに同じ数字は使えません。 
#  たとえば、n が 3 で s が6 のとき、3 個の数字の合計が 6 になる組み合わせは、 
#  1 + 2 + 3 = 6 
#  0 + 1 + 5 = 6 
#  0 + 2 + 4 = 6 
#  の 3 通りとなります。 
#  

'0 から 9 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力して終了する' :-
        count((
                    '0 から 9 の数字から異なる n 個の数を取り出して'(_n,L),
                    sum(L,_s)),
                _組み合わせの数),
        write_formatted('組み合わせの数は%t通り\n',[_組み合わせの数]).

'0 から 9 の数字から異なる n 個の数を取り出して'(_n,L) :-
        findall(N,for(0,N,9),L1),
        組み合わせ(L1,_n,L).

sum([],0) :- !.
sum([M|R],X) :- sum(R,Y),X is M + Y.