このディレクトリの索引

# [1]授業単元 プログラム演習
# [2]問題文:一行に「文字列」,「文字列」,「文字列」,「整数」
# というふうに4つの属性がそれぞれコンマで区切られたファイルを構造体に読み込み
# (ここまでは出来ました)、その2番目の属性に現れる全ての相異なる単語の出現頻度を求め、標準出力に書き出す。
# ここで単語は出現した順に並べる。また大文字は小文字に読み替え、区別しない。また単語のうちa,the,by,for,in,on,of,to,withは除外し、カウントしない。

'一行に「文字列」,「文字列」,「文字列」,「整数」
というふうに4つの属性がそれぞれコンマで区切られたファイルを構造体に読み込み
(ここまでは出来ました)、その2番目の属性に現れる全ての相異なる単語の出現頻度を求め、標準出力に書き出す。
ここで単語は出現した順に並べる。また大文字は小文字に読み替え、区別しない。また単語のうちa,the,by,for,in,on,of,to,withは除外し、カウントしない。'(_ファイル) :-
'2番目の属性に現れる全ての相異なる単語の出現頻度'(_ファイル).

'2番目の属性に現れる全ての相異なる単語の出現頻度'(_ファイル) :-
    get_split_lines(_ファイル,[','],L),
    出現頻度を求める(L,[],_出現頻度ならび),
    member([_出現頻度,_単語],_出現頻度ならび),
    write_formatted('%t,%t\n',[_単語,_出現頻度]),
    fail.
'2番目の属性に現れる全ての相異なる単語の出現頻度'(_).

出現頻度を求める([],X,X).
出現頻度を求める([[_,W,_,_]|R],Y,X) :-
    to_lower(W,W1),
    \+(member(W1,[a,the,by,for,in,on,of,to,with])),
    出現頻度の更新(W1,Y,Y2),
    出現頻度を求める(R,Y2,X).
出現頻度を求める([[_,W,_,_]|R],Y,X) :-
    to_lower(W,W1),
    member(W1,[a,the,by,for,in,on,of,to,with]),
    出現頻度を求める(R,Y,X).

出現頻度の更新(W,[],[[1,W]]).
出現頻度の更新(W,[[S,W]|R],[[S2,W]|R]) :- S2 is S + 1,!.
出現頻度の更新(W,[L|R1],[L|R2]) :- 出現頻度の更新(W,R1,R2).