このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 154代目 #737 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク): # 任意の0〜nの整数から、重複を許してm個の整数を選び出力するプログラムを作れ。 # '任意の0〜nの整数から、重複を許してm個の整数を選び出力する'(_n,_m) :- forall('任意の0〜nの整数から、重複を許してm個の整数を選び'(_n,_m,_重複を許したm個の整数ならび), 出力する(_重複を許したm個の整数ならび)). '任意の0〜nの整数から、重複を許してm個の整数を選び'(_n,_m,_重複を許したm個の整数ならび) :- '任意の0〜nの整数から'(_n,_整数ならび), '重複を許してm個の整数を選び'(_整数ならび,_m,_重複を許したm個の整数ならび). '任意の0〜nの整数から'(_n,_整数ならび) :- findall(_整数,between(0,_n,_整数),_整数ならび). '重複を許してm個の整数を選び'(L,1,[_整数]) :- member(_整数,L). '重複を許してm個の整数を選び'(L1,_m,L2) :- '_mが1より大きかったら重複を許してm個の整数を選んで行く'(L1,_m,L2). '_mが1より大きかったら重複を許してm個の整数を選んで行く'(L1,_m,L2) :- 'mが1より大きかったら、積み上がってくる下位要素の前にL1の要素を順に積み上げる'(_m,L1,L2,_mx,R1,R3), '重複を許してm個の整数を選び'(R1,_mx,R3). 'mが1より大きかったら、積み上がってくる下位要素の先頭要素を付加してその要素をL1の要素から取り出す'(_m,L1,L2,_mx,R1,R3) :- 'mが1より大きかったら、'(_m), '積み上がってくる下位要素に先頭要素を付加してその要素をL1の要素から取り出す'(_m,L1,L2,_mx,R1,R3). 'mが1より大きかったら、'(_m) :- _m > 1. '積み上がってくる下位要素に先頭要素を付加してその要素をL1の要素から取り出す'(_m,[_整数|R1],[_整数|R3],_mx,[_整数|R1],R3) :- succ(_mx,_m). '積み上がってくる下位要素に先頭要素を付加してその要素をL1の要素から取り出す'(_m,[_|R1],R3,_m,R1,R3). 出力する(_重複を許したm個の整数ならび) :- atomic_list_concat(_重複を許したm個の整数ならび,',',_表示文字列), writef('%w\n',[_表示文字列]).