このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286978599/585
#  [1] 授業単元:プログラミング基礎  
#  [2] 問題文(含コード&リンク):入力された"short型"変数を 
#  2進数で表示するプログラムを作って提出せよ。 
#  入力された値までの2進数は全て表示すること 
#  下にサンプルを記しておく。 
#  input>5 
#  0:0 
#  1:1 
#  2:10 
#  3:11 
#  4:100 
#  5:101 
#   
#  

'入力された"short型"変数を2進数で表示するプログラムを作って提出せよ。入力された値までの2進数は全て表示すること' :-
        整数の入力(N),
        for(0,M,N),
        '2進数として表示'(M,_2進数表示),
        write_formatted('%t:%t\n',[M,_2進数表示),
        M = N.

整数の入力(N) :-
        write('整数を入力してください : '),
        get_line(Line),
        整数入力の診断(Line,N),!.
整数の入力(N) :-
        整数の入力(N).

整数入力の診断(Line,N) :-
        atom_to_term(Line,N,_),
        integer(N),
        N > 0,!.
整数入力の診断(Line,N) :-
        write_formatted('入力された %t から適切な整数を得られませんでした\n再入力をお願いします\n',[Line]),
        fail.

'2進数として表示'(N,_2進数表示) :-
        '10進数から反転したビットならびを得る'(N,_反転したビットならび),
        reverse(_反転したビットならび,_ビットならび),
        concat_atom(_ビットならび,_2進数表示).

'10進数から反転したビットならびを得る'(0,[]) :- !.
'10進数から反転したビットならびを得る'(N,[M|R]) :-
        M is N mod 2,
        N2 is N // 2,
        '10進数から反転したビットならびを得る'(N2,R).