このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1307166756/928
#  ../test/read.cgi/tech/1307166756/885に追加で 
#   
#  [1] 授業単元:プログラミング 
#  [2] 問題文(含コード&リンク): 
#  file1を読み込み、特定の文字列string1 を全てstring2 に置き換え、file2に書き込むファイル、ensyu07.cを作成せよ 
#  replase_strings( ”file1”, ”file2”, ”string1”, ”string2” ) ; 
#   
#  file1を読み込み、行の文字数の大きい順番に並び換え、file2に書き込むファイル、ensyu08.cを作成せよ 
#  text_sort( ”file1”, ”file2” ) ; 
#   
#  出来れば../test/read.cgi/tech/1307166756/900や../test/read.cgi/tech/1307166756/907のような形式で書いてもらえると助かります 
#  

'file1を読み込み、特定の文字列string1 を全てstring2 に置き換え、file2に書き込む' :-
        'file1を読み込み'(_行ならび),
        '特定の文字列string1 を全てstring2 に置き換え'(_行ならび,_string1,_string2,_置き換えられた行ならび),
        file2に書きこむ(_置き換えられた行ならび).

file1を読み込み(_行ならび) :-
        get_lines(file1,_行ならび).

'特定の文字列string1 を全てstring2 に置き換え'(_行ならび,_string1,_string2,_置き換えられた行ならび) :-
        findall(_行1,(
                    append(_,[_行|_],_行ならび),
                    置換対象文字列は置換する(_行,_string1,_string2,_行1)),
                _置換された行ならび).

置換対象文字列は置換する(_行,_string1,_string2,_置換された行) :-
        sub_atom(_行,_,_,_,S1,_string1,S3,_,_,_),
        置換対象文字列は置換する(S3,_string1,_string2,_行2),
        concat_atom([S1,_string2,_行2],_置換された行),!.
置換対象文字列は置換する(_行,_,_,_行).

file2に書き込む(_行ならび) :-
        open(file2,write,Outstream),
        append(_,[_行|R],_行ならび),
        writef('%t\n',[_行]),
        R = [],
        close(Outstream),!.