このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286978599/407
#  [1] 授業単元:プログラミング設計演習 
#  [2] 問題文(含コード&リンク): 
#  32ビットの2進数から、.で区切られた10進数のIPアドレスに変換してください 
#  入力例 
#  00000011100000001111111111111111 
#  出力 
#  3.128.255.255 
#  

'32ビットの2進数から、.で区切られた10進数のIPアドレスに変換する' :-
        write('32ビットの2進数を連続した 0または1 32個で表現してください : '),
        get_line(Line),
        atom_chars(Line,Codes),
        findall(I,(member(Code,Codes),I is Code-48),_32ビットの0または1ならび),
        findall(X,(
                    先頭の8ビット(_32ビットの0または1ならび,[B1,B2,B3,B4,B5,B6,B7,B8]),
                    X is B1 * 128 + B2 * 64 + B3 * 32 + B4 * 16 + B5 * 8 + B6 * 4 + B7 * 2 + B8),
                L),
        write_formatted('%t.%t.%t.%t\n',L).

先頭の8ビット([B1,B2,B3,B4,B5,B6,B7,B8|R],[B1,B2,B3,B4,B5,B6,B7,B8]).
先頭の8ビット([_,_,_,_,_,_,_,_|R],L) :-
        先頭の8ビット(R,L).