このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1276810079/943
#  入力したDNA塩基配列中に,atgという並びがいくつあるか調べるプログラムを作成せよ.但し,入力には t, c, a, g以外の文字も入っている.塩基以外の文字は無視すること. 
#  【実行例】 
#   
#      % ./a.out 
#      1gattatgtga 
#      11tgccgatatc 
#      21gatatgattc 
#      (ここで ^D を押す) 
#      #ATG is 3 
#      % 
#   
#  よろしくお願いします。 
# 
# 

'入力したDNA塩基配列中に,atgという並びがいくつあるか調べるプログラムを作成せよ.但し,入力には t, c, a, g以外の文字も入っている.塩基以外の文字は無視すること' :-
        get_chars(Chars),
        atgという並びがいくつあるか(Chars,_いくつ).
        
atgという並びがいくつあるか([],0).
atgという並びがいくつあるか([a|R1],_いくつ) :-
        atgという並び(R1,R2),
        atgという並びがいくつあるか(R2,_いくつの一),
        _いくつ is _いくつの一 + 1,!.
atgという並びがいくつあるか([_|R1],_いくつ) :-
        atgという並びがいくつあるか(R1,_いくつ).

atgという並び(R1,R2) :-
        append(_,[t|L1],[g|R2],R1),
        \+((member(A,[a,t,c,g]),member(A,L1))),!.
atgという並び(_,[]).