このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1288531658/652
#  [1] プログラミング演習 
#  [2]非負の整数値をキーボードから入力して、その整数値から8個の数字を取り出す。 
#   unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。 
#  

'非負の整数値をキーボードから入力して、その整数値から8個の数字を取り出す。 unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。' :-
        '非負の整数値をキーボードから入力して、'(_非負の整数値),
        'その整数値から8個の数字を取り出す。'(_非負の整数値,_8個の数字ならび),
        'unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。'(_8個の数字ならび,[28,24,20,16,12,8,4,0],_8個の数字を格納した整数).

'非負の整数値をキーボードから入力して、'(_非負の整数値) :-
        write('非負の整数値を入力してください : '),
        get_line(Line),
        '非負の整数値入力診断'(Line,_非負の整数値),!.
'非負の整数値をキーボードから入力して、'(_非負の整数値) :-
        '非負の整数値をキーボードから入力して、'(_非負の整数値).

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

'その整数値から8個の数字を取り出す。'(_非負の整数値,_8個の数字ならび) :-
        number_chars(_非負の整数値,Chars),
        setof(A,member(A,Chars),L),
        length(_8個の数字ならび,8),
        '8個の数字を生成する'(L,_8個の数字ならび).

'8個の数字を生成する'(_,[]) :- !.
'8個の数字を生成する'(L,[N|R]) :-
        member(N,L),
        '8個の数字を生成する'(L,R).

'unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。'([],[],0) :- !.
'unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。'([N|R1],[M|R2],X) :-
        Y is N << M,
        'unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。'(R1,R2,Z),
        X is Y + Z.