このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1325685876/194
#  [1] 授業単元:C言語入門  
#  [2] 問題文: http://ime.nu/codepad.org/hsA7qgRQ  
#  
#  課題4
#  
#  キーボードから適当なアルファベット文字列を入力したとき,その文字列の中に"abc"という部分があれば文字列の先頭の左から数えて何文字目かを計算して表示せよ.
#  ただし先頭文字は1文字目と数える."abc"の部分が複数ある場合には最初のものが何文字目かを表示するものとする.もしも"abc"がなければ0として表示する.
#  
#  実行例
#  実行開始
#  jfdskfjhiewrujjjjkabcjfkdjfskdjfk         ←キーボードから入力
#  19	        ←19文字目からabc
#  
#  aが入力され,次にbが入力され,最後にcが入力されれば成功となるような状態遷移を書けばよい.それ以外の入力はすべて初期状態へ遷移させること.各状態で行末まで達した段階で「失敗」となる.
#  

'キーボードから適当なアルファベット文字列を入力したとき,その文字列の中に"abc"という部分があれば文字列の先頭の左から数えて何文字目かを計算して表示する' :-
        get_char(_文字),
        'キーボードから適当なアルファベット文字列を入力したとき,その文字列の中に"abc"という部分があれば文字列の先頭の左から数えて何文字目かを'(_文字,1,_,X),
        writef('先頭から%t文字目\n',[X]).

'キーボードから適当なアルファベット文字列を入力したとき,その文字列の中に"abc"という部分があれば文字列の先頭の左から数えて何文字目かを'(a,N,_,X) :-
        get_char(_文字),
        N2 is N + 1,
        abになるかどうか(_文字,N2,N,X).
'キーボードから適当なアルファベット文字列を入力したとき,その文字列の中に"abc"という部分があれば文字列の先頭の左から数えて何文字目かを'(_文字,N,_,X) :-
        get_char(_文字_2),
        N2 is N + 1,
        'キーボードから適当なアルファベット文字列を入力したとき,その文字列の中に"abc"という部分があれば文字列の先頭の左から数えて何文字目かを'(_文字,N2,_,X).

abになるかどうか(b,N,M,X) :-
        get_char(_文字),
        N2 is N + 1,
        abcになるかどうか(_文字,M,X).        
abになるかどうか(_文字,N,_,X) :-
        'キーボードから適当なアルファベット文字列を入力したとき,その文字列の中に"abc"という部分があれば文字列の先頭の左から数えて何文字目かを'(_文字,N,_,X).
        
abcになるかどうか(c,_,N,N) :- !.
abcになるかどうか(_文字,N,_,X) :-
        'キーボードから適当なアルファベット文字列を入力したとき,その文字列の中に"abc"という部分があれば文字列の先頭の左から数えて何文字目かを'(_文字,N,_,X).