このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354070278/983
#  [1] 授業単元:プログラミング基礎I 
#  [2] 問題文(含コード&リンク): 
#  入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ. 
#   
#  【実行例】 
#  % ./a.out 
#  tataatccg ← 入力し,リターンを押して ^D 
#  Thymine (t) : 3 
#  Cytosine (c) : 2 
#  Adenine (a) : 3 
#  Guanine (g) : 1 
#  % 
#   

'入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.' :-
        '入力したDNA塩基配列中にある'(_DNA塩基ならび),
        '塩基 t, c, a, gそれぞれの個数をカウントする'(_DNA塩基ならび,_t,_c,_a,_g),
        writef('Thymine (t) : %t\nCytoshine (c) : %t\nAdenine (a) : %t\nGuanime (g) : %t\n',[_t,_c,_a,_g]).

'入力したDNA塩基配列中にある'(_DNA塩基ならび) :-
        get_line(Line),
        atom_chars(Line,_DNA塩基ならび).

'塩基 t, c, a, gそれぞれの個数をカウントする'([],0,0,0,0).
'塩基 t, c, a, gそれぞれの個数をカウントする'([_塩基|R],_t,_c,_a,_g) :-
        '塩基 t, c, a, gそれぞれの個数をカウントする'(R,_t_1,_c_1,_a_1,_g_1),
        塩基個数を加算(_塩基,_t_1,_c_1,_a_1,_g_1,_t,_c,_a,_g).

塩基個数を加算(t,_t_1,_c,_a,_g,_t,_c,_a,_g) :-
        _t is _t_1 + 1.
塩基個数を加算(c,_t,_c_1,_a,_g,_t,_c,_a,_g) :-
        _c is _c_1 + 1.
塩基個数を加算(a,_t,_c,_a_1,_g,_t,_c,_a,_g) :-
        _a is _a_1 + 1.
塩基個数を加算(g,_t,_c,_a,_g_1,_t,_c,_a,_g) :-
        _g is _g_1 + 1.