このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1357748713/303
#  [1] 授業単元: 情報処理概論 
#  [2] 問題文(含コード&リンク): 
#  大、中、小の3 個のさいころを同時にふった時、出た目の和がm になるような目の出方をすべて求めるプログラムを作りなさい。 
#  ただし、m の値はキーボードから入力するものとする。表示を工夫して見やすい出力にすること。 
#  

'大、中、小の3 個のさいころを同時にふった時、出た目の和がm になるような目の出方をすべて求めるプログラムを作りなさい。
ただし、m の値はキーボードから入力するものとする。表示を工夫して見やすい出力にすること。'(_大,_中,_小) :-
        'm の値はキーボードから入力するものとする'(_m),
        '大、中、小の3 個のさいころを同時にふった時、出た目の和がm になるような目の出方をすべて求める'(_m,_大,_中,_小).

'm の値はキーボードから入力するものとする'(_m) :-
        整数を得る('2以上18以下の整数',(_m >= 2,_m =< 18),_m).

'大、中、小の3 個のさいころを同時にふった時、出た目の和がm になるような目の出方をすべて求める'(_m,_大,_中,_小) :-
        重複組合せ([1,2,3,4,5,6],3,[_大,_中,_小]),
        _m is _大 + _中 + _小.        

重複組合せ(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).