このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349527750/161
#  [1] 授業単元:プログラミング言語  
#  [2] 問題文  
#     1.空白、タブ、改行を数えるプログラムを書け。 
#     2.二つ以上の空白を一つの空白に置き換えながら、入力を出力にコピーするプログラムを書け。 
#  

'二つ以上の空白を一つの空白に置き換えながら、入力を出力にコピーする' :-
        get_char(_文字),
        '二つ以上の空白を一つの空白に置き換えながら、入力を出力にコピーする'(_文字).

'二つ以上の空白を一つの空白に置き換えながら、入力を出力にコピーする'(end_of_file) :- !.
'二つ以上の空白を一つの空白に置き換えながら、入力を出力にコピーする'(' ') :-
        空白以外の文字が現れるまで読み飛ばす(_空白以外の文字),
        put_char(' '),
        '二つ以上の空白を一つの空白に置き換えながら、入力を出力にコピーする'(_空白以外の文字),!.
'二つ以上の空白を一つの空白に置き換えながら、入力を出力にコピーする'(_文字) :-
        put_char(_文字),
        get_char(_文字_2),
        '二つ以上の空白を一つの空白に置き換えながら、入力を出力にコピーする'(_文字_2).

空白以外の文字が現れるまで読み飛ばす(_文字) :-
        repeat,
        get_char(_文字),
        \+(_文字 == ' ').