このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1269438098/605
#  キーボードから int 型変数aに値を入力し、aの値を 2 進数に変換して画面に表示するプログ 
#  ラムを作成せよ。 
#  ただし、aに負の値が入力された場合には、再入力させるものとする。 
#        実行例:    ()  の部分が入力である。 
#        Input a: (-4) 
#        Input a: (-3) 
#        Input a: (10) 
#        a(decimal)=10 
#        a(binary) =1010 
#   
# 
# 

'キーボードから int 型変数aに値を入力し、aの値を 2 進数に変換して画面に表示する(ただし、aに負の値が入力された場合には、再入力させるものとする。 ' :-
        repeat,
        get_integer(_a),
        _a >= 0,
        二進数(_a,_二進数ならび),
        append(_,[0|R],_二進数ならび),
        二進数表示文字列(_二進数ならび,_二進数表示文字列),
        write_formatted('a(decimal)=%t\na(binary) =%t\n',[_a,_二進数表示文字列]),!.

二進数(_10進数,L) :-
        length(L,32),
        二進数(_10進数,[],X),
        append(L1,X,L),
        all(L1,0).

二進数(J,Y,[J|Y]) :- J < 2.
二進数(J,Y,X) :- J >= 2,J2 is J // 2,M is J mod 2,二進数(J2,[M|Y],X).

二進数表示文字列(L,_二進数表示文字列) :-
        二進数表示文字列_2(L1,L2),
        concat_atom(L2,_二進数表示文字列).

二進数表示文字列_2([],[]) :- !.
二進数表示文字列_2([1|R1],['1'|R2]) :- 二進数表示文字列_2(R1,R2).
二進数表示文字列_2([0|R1],['0'|R2]) :- 二進数表示文字列_2(R1,R2).