このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1311089619/710
#  お願いします。  
#   
#  [1] 授業単元: 課題  
#  [2] 問題文  
#   
#  1. ランダムに決めた10個の整数(0〜50)を要素とする配列Aと配列Bを用意する。 
#  2. 配列Aと配列Bに共通する整数を表示する。 
#   
#   
#  

'1. ランダムに決めた10個の整数(0〜50)を要素とする配列Aと配列Bを用意する。 2. 配列Aと配列Bに共通する整数を表示する。' :-
        'ランダムに決めた10個の整数(0〜50)を要素とするならびAとならびBを用意する。'(_ならびA,_ならびB),
        'ならびAとならびBに共通する整数を表示する'(_ならびA,_ならびB).

'ランダムに決めた10個の整数(0〜50)を要素とするならびAとならびBを用意する。'(_ならびA,_ならびB) :-
        length(_ならびA,10),
        length(_ならびB,10),
        findall(_要素,(
                    append(_,[_|_],_ならびA),
                    _要素 is random(51)),
                _ならびA),
        findall(_要素,(
                    append(_,[_|_],_ならびB),
                    _要素 is random(51)),
                _ならびB),!.

'ならびAとならびBに共通する整数を表示する'(_ならびA,_ならびB) :-
        共通する整数ならび(_ならびA,_ならびB,_共通する整数ならび),
        表示する(_ならびA,_ならびB,_共通する整数ならび).

共通する整数ならび(_ならびA,_ならびB,_共通する整数ならび) :-
        setof(_共通する整数,(
                    member(_共通する整数,_ならびA),
                    member(_共通する整数,_ならびB)),
              _共通する整数ならび).

表示する(_ならびA,_ならびB,_共通する整数ならび) :-
        writef('%t,%t,の共通する整数は\n',[_ならびA,_ならびB]),
        append(_,[_共通する整数|R],_共通する整数ならび),
        writef('%t ',[__共通する整数]),
        R = [],
        write(' です。\n').