テキストを整理するプログラム

「テキストを整理するプログラム」の編集履歴(バックアップ)一覧に戻る

テキストを整理するプログラム - (2014/05/07 (水) 17:04:30) のソース

基本的なプログラム作法を学んだら、次は述語を使って実用的なプログラムを作ってみましょう。

今回はこのようなテキストがあったとします。
 //in.txt
 こんにちは
 やあ
 こんにちは
 こんにちは
 さよなら
 今晩は
 はじめまして
 今晩は
 今晩は
 さようなら
 やあ
 さようなら
 さようなら
 はじめまして

よく見ると同じ文章が複数含まれています。
重複している文章が不要なので、ニ度入力された文章は無視したいプログラムを書いてみましょう。

 test:-kanji_mode(_,on), tella('out.txt'),
 	see('in.txt',S),
 		repeat,gets(S,X,N),f(X),N=:=1,
 	seen(S),told.

 gets(S,L,N):-get0(S,X),gets(S,X,L,N).
 gets(S,4,[],1):-!.  %for Linux
 gets(S,26,[],1):-!. %for windows
 gets(S,10,[],0):-!. %LF
 gets(S,13,[],0):-!. %CR
 gets(S,31,[],0):-!. %for az-prolog
 gets(S,X,[X|L],N):-gets(S,L,N).
 
 f([]).
 f(A):-a(A),!.
 f(A):-assert(a(A)),!,name(B,A),write(B),nl.