このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1311089619/511
#  [1] 授業単元:C言語演習  
#  [2] 問題文(含コード&リンク):  
#  演習目的  
#  々渋ぢ里筌櫂ぅ鵐燭鰺用して、データ構造を設計することができる。  
#  構造体をreturn文で返却する関数を作ることができる。  
#  ポインタを扱うことができる。  
#  課題:  
#  2つのビット列(unsigned char型の2変数)を受け取り、 
#  そのビット列のハミング距離を返す関数を作成しなさい。 
#  また、ビットの並を表示する関数を作成しなさい。 
#  ビット列x=(x0,x1,…,x7)とy=(y0,y1,…,y7)の 
#  ハミング距離dは次で定義される。 
#  すなわち、異なるビットの個数である。 
#  d=[i=0,7](xi^yi),   xi,yi∈{0,1} 
#  例えば、x=5,y=3のとき、x=(00000101),y=(00000011)であり、 
#  ハミング距離はd=2となる。 
#  01の並びを入力し、変数に代入する関数を作ってもよい。 
#  

ハミング距離(N1,N2,_ハミング距離) :-
        N3 is N1 # N2,
        ハミング距離_2(N3,_ハミング距離).

ハミング距離_2(0,0).
ハミング距離_2(N,S) :-
        D is N // 2,
        M is N mod 2,
        ハミング距離_2(D,S_1),
        S is M + S_1.