このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 135代目 #633 # [1] プログラミング演習 # [2] # 5匹の羊と5匹の狼を1匹ずつひとつの檻に入れる。 # 羊の数を狼の数が超えると羊が食べられるのでNG。 # 上の条件で羊と狼を全頭檻に入れられる順番の組み合わせを全通り出力するプログラム。 # 他に方法はないのでしょうか? # # [3] WinXP / GCC / C # [4] 明日まで # [5] 標準入出力 / ループ / if / 配列 / ポインタ / 自作関数くらいまで習いました。 # http://ime.nu/brunhild.sakura.ne.jp/up/src/up443431.txt # ↑を繰り返すくらいしか思いつきません。 # # '5匹の羊と5匹の狼を1匹ずつひとつの檻に入れる。 羊の数を狼の数が超えると羊が食べられるのでNG。 上の条件で羊と狼を全頭檻に入れられる順番の組み合わせを全通り出力する'(_檻に入る順番ならび) :- _狼ならび=[_,_,_,_,_], _羊ならび=[_,_,_,_,_], 檻の中の構成(_狼ならび,_羊ならび,[],[],_檻に入る順番ならび). 檻の中の構成([],[],_,_,[]). 檻の中の構成(_狼ならび,_羊ならび,_狼の数,_羊の数,_檻に入れる順番ならび) :- 檻の中が可能な組み合わせになるように狼または羊を取り出して檻に入れる(_狼ならび,_羊ならび,_狼の数,_羊の数,_檻に入れる順番ならび). 檻の中が可能な組み合わせになるように狼または羊を取り出して檻に入れる(_狼ならび,_羊ならび,_狼の数,_羊の数,_檻に入れる順番ならび) :- 狼を檻に入れる(_狼ならび,_羊ならび,_狼の数,_羊の数,_檻に入れる順番ならび). 檻の中が可能な組み合わせになるように狼または羊を取り出して檻に入れる(_狼ならび,_羊ならび,_狼の数,_羊の数,_檻に入れる順番ならび) :- 羊を檻に入れる(_狼ならび,_羊ならび,_狼の数,_羊の数,_檻に入れる順番ならび). 狼を檻に入れる([_|_狼ならび],_羊ならび,_狼の数,_羊の数,[狼|_檻に入れる順番ならび]) :- 檻の中で可能な組み合わせ([_|_狼の数],_羊の数), 檻の中の構成(_狼ならび,_羊ならび,[_|_狼の数],_羊の数,_檻に入れる順番ならび). 羊を檻に入れる(_狼ならび,[_|_羊ならび],_狼の数,_羊の数,[羊|_檻に入れる順番ならび]) :- 檻の中で可能な組み合わせ(_狼の数,[_|_羊の数]), 檻の中の構成(_狼ならび,_羊ならび,_狼の数,[_|_羊の数],_檻に入れる順番ならび). 檻の中で可能な組み合わせ(_狼ならび,[]). 檻の中で可能な組み合わせ(_狼ならび,_羊ならび) :- append(_狼ならび,_,_羊ならび).