このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/256
#  [1] 授業単元:情報処理概論  
#  [2] 問題文(含コード&リンク): 
#  つると亀が合わせてn匹います。足の数は合わせてmです。 
#  nとmを入力して、つると亀がそれぞれ何匹いるのか求めるプログラムを作りなさい。 
#  もし解がない場合は、その旨を出力するようプログラムすること。 
#  

つると亀が合わせてn匹います。足の数は合わせてmです。nとmを入力して、つると亀がそれぞれ何匹いるのか求めるプログラムを作りなさい。 :-
        つると亀が合わせてn匹います(_n),
        足の数は合わせてmです(_m),
        ガウス行列に変形([[2,4,_m],[1,1,_n]],_ガウス行列),
        既約ガウス行列に変形(_ガウス行列,[[_,_,_,_つるの数],[_,_,_,_亀の数]]),
        write_formatted('つるの数は %t 羽、亀の数は %t 匹です。\n',[_つるの数,_亀の数]),!.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

つると亀が合わせてn匹います(_つると亀が合わせてn匹) :-
        write('つると亀合わせて何匹いますか? : '),
        get_line(Line),
        つると亀が合わせてn匹入力の診断(Line,_つると亀が合わせてn匹),!.

つると亀が合わせてn匹入力の診断(Line,_つると亀が合わせてn匹) :-
        atom_to_term(Line,_つると亀が合わせてn匹,_),
        integer(_つると亀が合わせてn匹),
        _つると亀が合わせてn匹 > 0,!.
つると亀が合わせてn匹入力の診断(Line,_つると亀が合わせてn匹) :-
        write_formatted('入力された %t からは整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

足の数は合わせてmです(_足の数は合わせてm) :-
        write('足の数は合わせて? : '),
        get_line(Line),
        足の数は合わせてmの診断(Line,_足の数は合わせてm),!.
足の数は合わせてmです(_足の数は合わせてm) :- 足の数は合わせてmです(_足の数は合わせてm).

足の数は合わせてmの診断(Line,_足の数は合わせてm) :-
        atom_to_term(Line,_足の数は合わせてm,_),
        integer(_足の数は合わせてm),
        _足の数は合わせてm >= 0,!.
足の数は合わせてmの診断(Line,_足の数は合わせてm) :-
        write_formatted('入力された %t からは整数が得られません。再入力をお願いします。\n',[Line]),
        fail.