このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1322562648/526
#  [1] 授業単元:プログラミング言語 
#  [2] 問題文(含コード&リンク):m行n列のテキストファイル(1.txt)をそれぞれ二次元配列に入れ、その配列から新しいテキストファイル(2.txt)に1.txtと同じ内容を出力するようなプログラムを作成せよ。 
#  

'm行n列のテキストファイル(1.txt)をそれぞれ二次元配列に入れ、その配列から新しいテキストファイル(2.txt)に1.txtと同じ内容を出力する'(_m行,_n列,LL) :-
        get_lines('1.txt',Lines),
        length(Lines,_m行),
        区切り要素のスパイ(Lines,_n列,_区切り要素),
        配列に入れる(Lines,_区切り要素,LL),
        '配列から新しいテキストファイル(2.txt)に1.txtと同じ内容を出力する'(LL,_区切り要素).

区切り要素のスパイ([Line|_],_n列,',') :-
        length(L,_n列),
        split(Line,',',L),!.
区切り要素のスパイ([Line|_],_n列,' ') :-
        length(L,_n列),
        split(Line,' ',L),!.

配列に入れる([],_,[]).
配列に入れる([_行|R1],_区切り要素,[L|R2]) :-
        区切り要素で区切る(_行,_区切り要素,L),
        配列に入れる(R1,_区切り要素,R2).

'配列から新しいテキストファイル(2.txt)に1.txtと同じ内容を出力する'(LL,_区切り要素) :-
        open('2.txt',write,Outstream),
        出力する(Outstream,LL,_区切り要素),
        close(Outstream).

出力する(Outstream,LL,_区切り要素) :-
        append(_,[L|R],LL),
        atmic_list_concat(L,_区切り要素,Line),
        writef(Outstream,'%w\n',[Line]),
        R = [].

区切り要素で区切る(_行,_区切り要素,[_前文字列|R]) :-
        '前文字列・適合文字列・後文字列'(_行,_前文字列,_区切り要素,_後文字列),
        区切り要素で区切る(_後文字列,_区切り要素,R),!.
区切り要素で区切る(_行,_,[_行]).