このディレクトリの索引
#  出題場所 :: http://peace.2ch.net/test/read.cgi/tech/1392388003/860
#  [1] 授業単元: プログラミング基礎 
#  [2] 問題文 
#  n個の整数を含む集合Sと、 
#  q個の異なる整数を含む集合Tを入力とし、 
#  Tに含まれる整数の中でSに含まれるものの数Cを 
#  出力するプログラムを作成せよ。 
#   
#  入力 
#  1行目にSを表すn個の整数、 
#  2行目にTを表すq個の整数が与えられる。 
#  出力 
#  Tに含まれる整数の中でSに含まれるものの数Cを出力せよ。 
#  条件 
#  n : 10以下 
#  q : 5以下 
#  集合に含まれる整数の値 以上、6未満 
#   
#  実行例) 
#  3 8 4 1 9 2 5 7 6 入力(集合S:n個(9)) 
#  1 3 5 10  入力(集合T:q個(4)) 
#  3   出力(C) 
#  21 30 5 21 10 39 14 入力(集合S:n個(7)) 
#  1 21 10   入力(集合T:q個(3)) 
#  2   出力(C) 
#  

'n個の整数を含む集合Sと、 
q個の異なる整数を含む集合Tを入力とし、 
Tに含まれる整数の中でSに含まれるものの数Cを 
出力するプログラムを作成せよ。'(_n,_q) :-
'n個の整数を含む集合Sと、q個の異なる整数を含む集合Tを入力とし、'(_n,_S,_q,_T),
'Tに含まれる整数の中でSに含まれるものの数Cを'(_T,_S,_C),
出力する(_C).


'n個の整数を含む集合Sと、q個の異なる整数を含む集合Tを入力とし、'(_n,_S,_q,_T) :-
'n個の整数を含む集合Sの入力、'(_n,_S),
'q個の異なる整数を含む集合Tの入力'(_q,_T).


'n個の整数を含む集合Sの入力、'(_n,_S) :-
writef('集合S 入力する整数は%t個です : ',[_n]),
get_split_line([' '],_S).


'q個の異なる整数を含む集合Tの入力'(_q,_T) :-
writef('集合T 入力する整数は%t個で、同じ数字であってはいけません : ',[_q]),
get_split_line([' '],_T).


'Tに含まれる整数の中でSに含まれるものの数Cを'(_T,_S,_C) :-
setof(_整数,member(_整数,_T),_T_1),
count((member(_N,_T_1),member(_N,_S)),_C).


出力する(_C) :-
writef('%t\n',[_C]).