このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1200175247/704 
#  B列に1万近くの数値があり、そこから特定の範囲(例えば100〜101など)に適した数値を 
#  指定したセルに抽出し、複数ある場合はそのしたに並べて抽出するようなプログラムを作りたいのですが、 
#  どのようにしたらよいでしょうか? 

t2_83(_抽出値範囲キーならび,_抽出ならび) :- 
    'B列の生成'(B列), 
    抽出ならびの初期化(_初期抽出ならび), 
    t2_83(_抽出値範囲キーならび,B列,_初期抽出ならび,_抽出ならび). 

t2_83([],B列,X,X). 
t2_83([[_値範囲|_キー]|R1],B列,_抽出ならび,X) :- 
    'B列から値抽出'(B列,_値範囲,_値ならび), 
    抽出ならびの更新(_値ならび,_キー,_抽出ならび,_更新された抽出ならび), 
    t2_83(R,B列,_更新された抽出ならび,X). 

'B列から値抽出'(B列,_値下限-_値上限,_値ならび) :- 
    findall(_値,(member(_値,B列),_値>=_値下限,_値=<_値上限),_値ならび). 

抽出ならびの更新([],_,X,X). 
抽出ならびの更新([_値|R],_キー,_抽出ならび,_更新された抽出ならび) :- 
    list_nth(_キー,_抽出ならび,L1), 
    append(L1,[_値],L2), 
    位置指定によるならびの置換(_キー,L2,_抽出ならび,_置換された抽出ならび), 
    抽出ならびの更新(R,_キー,_置換された抽出ならび,_更新された抽出ならび). 

'B列の生成'(B列) :- findall(_値,(for(1,N,10000),_値 is random mod 10000),B列). 

抽出ならびの初期化([[],[],[],[],[],[],[],[],[],[]]).