このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1322562648/128
#  1] 授業単元:C言語 
#  [2] 問題文(含コード&リンク): 
#  1番:コマンドライン引数を用いて2つの10進数を入力し, 
#  その2つの数を2進数表示したものについて,論理和,論理積, 
#  排他的論理和,を表示するプログラムを作成せよ。 
#  また,2進数で直接入力して計算できるようにせよ。 
#   
#  2番:1番で求めた論理和,論理積,排他的論理和について、 
#  指定したビット目の値、連続する0の数および1の数をそれぞれ数えて 
#  交互に表示するプログラムを作成せよ。 
#   
#  3番目:1番で求めた論理和,論理積,排他的論理和について、 
#  4桁ずつ区切って16進数で表示するプログラムを作成せよ. 
#   
#  例: 
#  論理和 : 000111101001001 
#  1番目の区切り:0001 = 1 
#  2番目の区切り:1110 = e 
#  3番目の区切り:1001 = 9 
#  4番目の区切り:001  = 1 
#  

ビット目の指定(_ならび,_nビット目,_nビット目の値) :-
        nth1(_nビット目,_ならび,_nビット目の値).

'連続する0の数および1の数をそれぞれ数えて交互に表示する'(L) :-
        '連続する0の数および1の数をそれぞれ数えて'(L,L2),
        concat_atom(L2,',',_表示文字列),
        writef('%t\n',[_表示文字列]).

'連続する0の数および1の数をそれぞれ数えて'(L,[Len|R2]) :-
        append(L0,[A|R],L),
        \+(member(A,L0)),
        length(L0,Len),
        '連続する0の数および1の数をそれぞれ数えて'([A|R],R2).
'連続する0の数および1の数をそれぞれ数えて'(L,[Len]).
        length(L,Len).