このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354070278/717
#  [1] 授業単元: C演習 
#  [2] 問題文(含コード&リンク): 
#  (問題文)http://imgur.com/bAeG1 
#  (途中まで書いたコード)://codepad.org/nwwt2hgU 
#  (使用するテキストファイル、結果含む)
#  http://s2.muryo-de.mydns.jp/~c_cpp_homework/cgi-bin/joyful/joyful.cgi? のNo.396 
#  

:- dynamic(転置索引/2).

テキストのダウンロード(_サイトファイル名,_出力ファイル名) :-
        atomic_list_concat(['w3m -dump ',_サイトのファイル名],S),
        popen(S,Chars),
        open(_出力ファイル名,write,Outstream),
        ファイルに書き込む(Outstream,Chars),
        close(Outstream).

ファイルに書き込む(Outstream,[]).
ファイルに書き込む(Outstream,[C|R]) :-
        put_char(Outstream,C),
        ファイルに書き込む(Outstream,R).

転置索引を作る(_ファイル名) :-
        open(_ファイル名,read,Instream),
        ストリームから転置索引を作る(Instream,0),
        close(Instream).

ストリームから転置索引を作る(Instream,_) :-
        at_end_of_stream(Instream),!.
ストリームから転置索引を作る(Instream,N) :-
        get_line(Instream,Line),
        N_2 is N + 1,
        語彙を転置索引に登録する(Line,N),
        ストリームから転置索引を作る(Instream,N_2).

語彙を転置索引に登録する(Line,N) :-
        split(Line,[' ',',','.',':','(',')'],L),
        member(_語彙,L),
        \+(転置索引(_語彙,N)),
        assertz(転置索引(_語彙,N)),
        fail.
語彙を転置索引に登録する(_,_).

popen(Command,Chars) :-
        open(pipe(Command),read,Instream),
        get_char(Instream,Char),
        popen(Instream,Char,Chars),
        close(Instream),!.

popen(Instream,end_of_file,[]) :- !.
popen(Instream,Char,[Char|R]) :-
        get_char(Instream,Char2),
        popen(Instream,Char2,R).

shs(Command,X) :-
        popen(Command,L),
        shs_3(L,X).

shs_3(L,[S|R]) :-
        append(L0,['\n'|R1],L),
        atom_chars(S,L0),
        shs_3(R1,R).
shs_3([],[]) :- !.
shs_3(L,[S]) :-
        atom_chars(S,L).