このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1296387672/309
#  [1] 授業単元:情報処理  
#  [2] 問題文(含コード&リンク):  
#  ポインタstrが文字列の先頭文字を指している時その文字列に含まれる英字でない文字の個数を返す関数です。  
#  ただし、英小文字a〜z,英大文字A〜Zには、それぞれ昇順に連続した1バイトの整数が割り当てられています。  
#   
#  次の<1>〜<5>の答えをうめてください。  
#  unsigned not_alpha_num(const char *str)  
#  {  
#  unsigned sum =0;  
#   
#  while (*str) {  
#  if((*str <1> 'a' || *str <2> z) <3>  
#   
#  (*str <1> <4> || <2> <5>)) sum++;  
#   
#  str++;  
#  }  
#  return(sum);  
#  }  
#   

文字列に含まれる英字でない文字の個数(_文字列,_英字でない文字の個数) :-
        count((sub_atom(_文字列,_,1,_,_文字),\+(英字(_文字))),_英字でない文字の個数).

英字(_文字) :-
        _文字 @>= 'A',
        _文字 @=< 'Z',!.
英字(_文字) :-
        _文字 @>= 'a',
        _文字 @=< 'z',!.