このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1307166756/797
#  【1】c言語 
#  【2】 
#  入力した数値を偶数なら2で割り、奇数なら3倍して1を足すという操作を1になるまで繰り返すプログラムを作成してください 
#  「偶数なら2で割る,奇数なら3倍して1を足す」という部分を関数化してください。 
#  なお,関数は以下の仕様とすること. 
#   
#  関数の仕様  int kakutani(int x){       
#   
#     int ret; 
#   
#     偶数なら2で割る,奇数なら3倍して1を足す      
#   
#     return( ret ); 
#   
#  } 
#    


'入力した数値を偶数なら2で割り、奇数なら3倍して1を足すという操作を1になるまで繰り返す'(_入力した数値) :-
        '偶数なら2で割り、偶数なら2で割り、奇数なら3倍して1を足すという操作を1になるまで繰り返す'(_入力した数値).

'偶数なら2で割り、奇数なら3倍して1を足すという操作を1になるまで繰り返す'(1) :- !.
'偶数なら2で割り、奇数なら3倍して1を足すという操作を1になるまで繰り返す'(_入力した数値) :-
        '偶数なら2で割り'(_数値1,_数値2),
        '偶数なら2で割り、奇数なら3倍して1を足すという操作を1になるまで繰り返す'(_数値2).
'偶数なら2で割り、奇数なら3倍して1を足すという操作を1になるまで繰り返す'(_入力した数値) :-
        '奇数なら3倍して1を足す'(_数値1,_数値2),
        '偶数なら2で割り、奇数なら3倍して1を足すという操作を1になるまで繰り返す'(_数値2).

'偶数なら2で割り'(_数値1,_数値2) :-
        偶数(_数値1),
        _数値2 is _数値1 // 2,!.

'奇数なら3倍して1を足す'(_数値1,_数値2) :-
        奇数(_数値1),
        _数値2 is (_数値1 * 3) + 1,!.

奇数(_奇数) :-
        1 is _奇数 mod 2.

偶数(_偶数) :-
        0 is _偶数 mod 2.