10/02/04 17:11:30
>>606
% Prolog (その一) 例で ","の後に空白が一つ入っているのは誤りだと思う。
program :-
repeat,
標準入力から行を読み込み(_行),
空白をカンマに変換し、標準出力に出力する(_行).
空白をカンマに変換し、標準出力に出力する(end_of_file) :- !.
空白をカンマに変換し、標準出力に出力する(_行) :-
空白をカンマに変換し、(_行,_変換された行),
標準出力に出力する(_変換された行),
fail.
標準入力から行を読み込み(_行) :-
get_line(_行).
空白をカンマに変換し、(_行,_変換された行) :-
atom_chars(_行,Chars),
文字ならびの空白をカンマに変換(Chars,Chars2),
atom_chars(_変換された行,Chars2).
文字ならびの空白をカンマに変換([],[]) :- !.
文字ならびの空白をカンマに変換(L,[',']) :- 空白またはタブならび(L),!.
文字ならびの空白をカンマに変換(L1,[',',A|R2]) :-
append(L0,[A|R3],L1),
\+(A=' '),\+(A='\t'),
空白またはタブならび(L0),
文字ならびの空白をカンマに変換(R3,R2),!.
文字ならびの空白をカンマに変換([A|R1],[A|R2]) :-
文字ならびの空白をカンマに変換(R1,R2),!.