このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/501
#  ../test/read.cgi/tech/1335517816/496 ../test/read.cgi/tech/1335517816/498 
#  ありがとうございます。 
#   
#  {1] 授業単元:プログラミング演習  
#  [2] 問題文:  
#  アルファベット、数字、空白が混在した文字列(最高48文字)をキーボードから入力し、 
#  リターンキーを押すと数字のみ#に置き換えられた文字列が出力されるプログラムを作成しなさい。 
#  

'アルファベット、数字、空白が混在した文字列(最高48文字)をキーボードから入力し、リターンキーを押すと数字のみ#に置き換えられた文字列が出力される' :-
        'アルファベット、数字、空白が混在した文字列(最高48文字)をキーボードから入力し'(_文字列),
        '数字のみ#に置き換えられた文字列が'(_文字列,_置き換えられた文字列),
        出力される(_置き換えられた文字列).

'アルファベット、数字、空白が混在した文字列(最高48文字)をキーボードから入力し'(_文字列) :-
        length(L,48),
        findall(_文字,(
                   append(L0,[_|_],L),
                   'アルファベット、数字、空白が混在した文字'(_文字),
                   (   _文字='\n',!,fail;
                       true)),
               _文字ならび),
        atom_chars(_文字列,_文字ならび).

'アルファベット、数字、空白が混在した文字'(_文字) :-
        get_char(_文字),
        'アルファベット、数字、空白が混在した文字診断'(_文字),!.
'アルファベット、数字、空白が混在した文字'(_文字) :-
        'アルファベット、数字、空白が混在した文字'(_文字).

'アルファベット、数字、空白が混在した文字診断'(_文字) :-
        アルファベット(_文字).
'アルファベット、数字、空白が混在した文字診断'(_文字) :-
        数字(_文字).
'アルファベット、数字、空白が混在した文字診断'(_文字) :-
        空白(_文字).

アルファベット(_文字) :-
        _文字 @>= 'A',
        _文字 @=< 'Z'.
アルファベット(_文字) :-
        _文字 @>= 'a',
        _文字 @=< 'z'.

数字(_文字) :-
        member(_文字,['0','1','2','3','4','5','6','7','8','9']).

空白(' ').

'数字のみ#に置き換えられた文字列が'(_文字列,_置き換えられた文字列) :-
        findall(_数字のみ置き換えられた文字,(
                    sub_atom(_文字列,_,1,_,_文字),
                    '数字のみ#の置き換える'(_文字,_数字のみ置き換えられた文字)),
                L),
        atomic_list_concat(L,_置き換えられた文字列).

'数字のみ#の置き換える'(_文字,'#') :-
        数字(_文字),!.
'数字のみ#の置き換える'(_文字,_文字).

出力される(_置き換えられた文字列) :-
        writef('置き換えられた文字列 = "%t"\n',[_置き換えられた文字列]).