このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354070278/950
#  [1] プログラミング1 
#  [2] 現在のインターネットを実現しているTCP/IP通信プロトコルでは主にIPv4 
#    を用いており、コンピュータを一意に識別するために32ビットのIPアドレスを 
#    用いている。これを踏まえ、IPアドレスの4つの数字を入力させ、これらを32ビットの 
#    データ型であるunsigned int型の変数にIPアドレスを示す2進数の数値として保存せよ。 
#    保存したIPアドレスがunsigned intの整数値として解釈するといくつとなるか表示する 
#    プログラムを作成せよ。 
#  

'IPアドレスの4つの数字を入力させ、これらを32ビットのデータ型であるunsigned int型の変数にIPアドレスを示す2進数の数値として保存せよ。' :-
        'IPアドレスの4つの数字を入力させ、'(_数字_1,_数字_2,_数字_3,_数字_4),
        'これらを32ビットのデータ型であるunsigned int型の変数にIPアドレスを示す2進数の数値として保存せよ。'(_数字_1,_数字_2,_数字_3,_数字_4).

'IPアドレスの4つの数字を入力させ、'(_数字_1,_数字_2,_数字_3,_数字_4) :-
        整数を得る('255以下の整数',(_数字_1 >= 0,_数字_1 =< 255),_数字_1),
        整数を得る('255以下の整数',(_数字_2 >= 0,_数字_2 =< 255),_数字_2),
        整数を得る('255以下の整数',(_数字_3 >= 0,_数字_3 =< 255),_数字_3),
        整数を得る('255以下の整数',(_数字_4 >= 0,_数字_4 =< 255),_数字_4),!.
'IPアドレスの4つの数字を入力させ、'(_数字_1,_数字_2,_数字_3,_数字_4) :-
        'IPアドレスの4つの数字を入力させ、'(_数字_1,_数字_2,_数字_3,_数字_4).

'これらを32ビットのデータ型であるunsigned int型の変数にIPアドレスを示す2進数の数値として保存せよ。'(_数字_1,_数字_2,_数字_3,_数字_4) :-
        N is _数字_1 * 4096 + _数字_2 * 256 + _数字_3 * 16 + _数字_4,
        整数を2進数ならびに変換(N,_2進数ならび),
        asserta('IPアドレス2進数ならび'(_2進数ならび)).

整数を2進数ならびに変換(0,L,L) :- !.
整数を2進数ならびに変換(N,L1,L) :-
        M is N mod 2,
        N_2 is N // 2,
        整数を2進数ならびに変換(N_2,[M|L1],L).