このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/294
#  [1] 授業単元: プログラミング 
#  [2] 問題文:  
#  変数iに100が入っています、 
#   
#  iとは別に、50,75,55,60というように、ランダムな数字の配列があり、 
#  次にくる数字が前の数字(ここでは60)より、5%大きかったら、 
#  iに1を加算するプログラムを作成。 
#   
#  -5%なら-1で、10%なら+2するといった感じです。5%未満なら加算しません。 
#   

'変数iに100が入っています、iとは別に、50,75,55,60というように、ランダムな数字の配列があり、次にくる数字が前の数字(ここでは60)より、5%大きかったら、iに1を加算する。-5%なら-1で、10%なら+2するといった感じです。5%未満なら加算しません。'(_ランダムな数1,_ランダムな数2,_i) :-
length(_ランダムな数ならび,100),
ランダムな数列を得る(_ランダムな数ならび),
変数iの変化をみる(100,_ランダムな数ならび,_ランダムな数1,_ランダムな数2,_i).

変数iの変化をみる(_i1,[_ランダムな数1,_ランダムな数2|R],_ランダムな数11,_ランダムな数12,_i) :-
iの変化(_ランダムな数1,_ランダムな数2,_i1,_i2),
変数iの変化をみる(_i2,_ランダムな数1,_ランダムな数2,R,_ランダムな数11,_ランダムな数12,_i).

変数iの変化をみる(_i,_ランダムな数1,_ランダムな数2,R,_ランダムな数1,_ランダムな数2,_i).
変数iの変化をみる(_i2,_ランダムな数1,_ランダムな数2,R,_ランダムな数11,_ランダムな数12,_i) :-
変数iの変化をみる(_i2,[_ランダムな数2|R],_ランダムな数11,_ランダムな数12,_i).

iの変化(_ランダムな数1,_ランダムな数2,_i1,_i2) :-
'_ランダムな数の変化率が5%,-5%,10%以上変化したら_i1を_i2に変化される'(_ランダムな数1,_ランダムな数2,_i1,_i2),!.
iの変化(_ランダムな数1,_ランダムな数2,_i1,_i1).

'_ランダムな数の変化率が5%,-5%,10%以上変化したら_i1を_i2に変化される'(_ランダムな数1,_ランダムな数2,_i1,_i2) :-
'5%大きかったらiに1を加算する'(_ランダムな数1,_ランダムな数2,_i1,_i2).
'_ランダムな数の変化率が5%,-5%,10%以上変化したら_i1を_i2に変化される'(_ランダムな数1,_ランダムな数2,_i1,_i2) :-
'-5%大きかったらiに-1を加算する'(_ランダムな数1,_ランダムな数2,_i1,_i2).
'_ランダムな数の変化率が5%,-5%,10%以上変化したら_i1を_i2に変化される'(_ランダムな数1,_ランダムな数2,_i1,_i2) :-
'10%大きかったらiに2を加算する'(_ランダムな数1,_ランダムな数2,_i1,_i2).

'5%大きかったらiに1を加算する'(_ランダムな数1,_ランダムな数2,_i1,_i2) :-
_ランダムな数2 > _ランダムな数1 * 1.05,
_i2 is _i + 1.

'-5%大きかったらiに-1を加算する'(_ランダムな数1,_ランダムな数2,_i1,_i2) :-
_ランダムな数2 < _ランダムな数1 * 0.95,
_i2 is _i - 1.

'10%大きかったらiに2を加算数(_ランダムな数1,_ランダムな数2,_i1,_i2) :-
_ランダムな数2 > _ランダムな数1 * 1.10,
_i2 is _i + 2.

ランダムな数列を得る([]).
ランダムな数列を得る([_ランダムな数|R]) :-
_ランダムな数 is random(30),
ランダムな数列を得る(R).