このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1308749241/600
#  [1] 授業単元:関数  
#  [2] 問題文(含コード&リンク):  
#  情報量の単位は、8bit=1B,1024B=1KB,1024KB=1MB,…(1TBまで)となっている。 
#  [実数]MBや、実数[KB]のような入力をしたとき、それが何bitを意味しているかを表示するプログラムを作成したい。 
#  なお、設定において、数値変換処理には、関数を利用することとし、入力は【整数】の後に「空白」を1つ挟み、【TB/MB/KB/B】のいずれかの単位を表す文字列が書かれているものとする。 
#  

'[実数]MBや、実数[KB]のような入力をしたとき、それが何bitを意味しているかを表示する'(_文字列,_ビット数) :-
        sub_atom(_文字列,_,_,_,S1,S2,S3,L1,L2,L3),
        数値変換(_文字列,L1,L2,_ビット数).

数値変換(_文字列,S1,[' ','T','B'|_],_ビット数) :-
        atom_to_term(S1,_テラバイト数,_),
        _ビット数 is 8 * _テラバイト数 * 1000000000,!.
数値変換(_文字列,S1,[' ','M','B'|_],_ビット数) :-
        atom_to_term(S1,_メガバイト数,_),
        _ビット数 is 8 * _メガバイト * 1000000,!.
数値変換(_文字列,S1,[' ','K','B'|_],_ビット数) :-
        atom_to_term(S1,_キロバイト数,_),
        _ビット数 is 8 * _キロバイト * 1000,!.
数値変換(_文字列,S1,[' ','B'|_],_ビット数) :-
        atom_to_term(S1,_バイト数,_),
        _ビット数 is 8 * _バイト数,!.