?- 'a##'. c157-573#
このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/573
#  ../test/read.cgi/tech/1335517816/556 ありがとうございます。 
#  {1] 授業単元:プログラミング演習  
#  [2] 問題文:  
#  要素数50の文字型配列を用意。 
#  そして幾つかの単語を「,」で区切って入力すると、 
#  入力された単語数が表示されるプログラムを作成しなさい。 
#  ヒントは下記のプログラム 
#  http://ime.nu/codepad.org/OvHXNm6s 
#  

'要素数50のならびを用意。そして幾つかの単語を「,」で区切って入力すると、入力された単語数が表示される' :-
        '要素数50のならびを用意'(L),
        'そして幾つかの単語を「,」で区切って入力すると'(L),
        '入力された単語数が表示される'(L).

'要素数50のならびを用意'(L) :-
        length(L,50).

'そして幾つかの単語を「,」で区切って入力すると'(L) :-
        findall(A,(
                    append(_,[_|R],L),
                    get_char(C),
                    (    C = '\n',!,member(A,[_|R]);
                         A = C)),
                L).

'入力された単語数が表示される'(L) :-
        '入力された単語数が'(L,_単語数),
        表示される(_単語数).

'入力された単語数が'(L,_単語数),
        count((
                append(L1,L2,L),
                度数加算(L2)),
            _単語数).
                
度数加算([A]) :-
        \+(var(A)),!.
度数加算([A,V|_]) :-
        \+(var(A)),
        var(V),!.
度数加算([','|_]) :- !.

表示される(_単語数) :-
        writef('単語数は %t です。\n',[_単語数]).