このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1269438098/411
#   
#  [2] 問題文(含コード&リンク): 
#    簡単なんですけど、C言語苦手でお願いします。 
#     
#   すべて関数の部分だけで大丈夫です。 
#   3つの実数の掛け算をもとめよ。 
#   整数nの階乗n!をもとめよ。 
#   配列・実数・data[]の平均値を求めよ。 
#   2つの実数 aとbの内容を入れ替えよ。  
#  

3つの実数の掛け算をもとめよ(_実数1,_実数2,_実数3,_実数解) :-
      _実数解 is _実数1 * _実数2 * _実数3.

'整数nの階乗n!をもとめよ'(0,1).
'整数nの階乗n!をもとめよ'(1,1).
'整数nの階乗n!をもとめよ'(_整数n,_n!) :-
      _整数nより1小さい数 is _整数n - 1,
      '整数nの階乗n!をもとめよ。 '(_整数nより1小さい数,_(n−1)!),
      _n! is _(n−1)! * _整数n.

'配列・実数・data[]の平均値を求めよ'(_実数のならび,_平均値) :-
      相加平均(_実数のならび,_平均値).

'2つの実数  aとbの内容を入れ替えよ'(_a,_b,_b,_a).

'2つの実数  aとbの内容を入れ替えよ'(a,b) :-
      retract(a(_a)),
      retract(b(_b)),
      assertz(a(_b)),
      assertz(b(_a)).

相加平均([],N,S,M) :- M is S / N,!.
相加平均([A|R],N,S,M) :- S1 is S + A, 相加平均(R,N,S1,M).

相加平均(L,M) :- length(L,N), 相加平均(L,N,0.0e+00,M).