このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1322562648/737
#  [1] 授業単元:プログラミング演習  
#  [2] 問題文(含コード&リンク):  
#  任意の0〜nの整数から、重複を許してm個の整数を選び出力するプログラムを作れ。 
#  

'任意の0〜nの整数から、重複を許してm個の整数を選び出力する'(_n,_m,_重複を許したm個の整数ならび) :-
        '任意の0〜nの整数から'(_n,_整数ならび),
        '重複を許してm個の整数を選び出力する'(_整数ならび,_m,_重複を許したm個の整数ならび).

'任意の0〜nの整数から'(_n,_整数ならび) :-
        findall(N,(
                    for(0,N,_n)),
                _整数ならび).

'重複を許してm個の整数を選び出力する'(L,1,[_整数]) :-
        member(N,L).
'重複を許してm個の整数を選び出力する'([_整数|R1],M,[_整数|R3]) :-
        M > 1,
        M_1 is M - 1,
        '重複を許してm個の整数を選び出力する'([A|R1],M_1,R3).
'重複を許してm個の整数を選び出力する'([_|R1],M,R3) :-
        M > 1,
        '重複を許してm個の整数を選び出力する'(R1,M,R3).