このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1248012902/408
# 【 課題 】[文字列"GPIB-002.70V"から文字列"-002.70"を取り出して、
#       その文字列をDoubleオブジェクトにし、それをdouble型
#       実数値に変換して数値を表示

'文字列"GPIB-002.70V"から文字列"-002.70"を取り出して、その文字列をDoubleオブジェクトにし、それをdouble型実数値に変換して数値を表示'(_文字列,_浮動小数点数値) :-
        atom_chars(_文字列,_文字ならび),
        連続する数字候補文字ならび(_文字ならび,_数字候補文字ならび),
        concat_atom(_数字候補文字ならび,_数字候補文字列),
        atom_to_term(_数字候補文字列,_浮動小数点数値,_).

連続する数字候補文字ならび(_文字ならび,_数字候補文字ならび) :-
        数値候補文字まで読み飛ばし(_文字ならび,_数値文字から始まる文字ならび),
        数字候補文字ならび(_数値文字から始まる文字ならび,_数字候補文字ならび).

数字候補文字ならび([],[]).
数字候補文字ならび(['e','+',A|R1],['e','+',A|R2]) :-
        数値文字候補(A),
        数字候補文字ならびの二(R1,R2),!.
数字候補文字ならび(['e','-',A|R1],['e','-',A|R2]) :
        数値文字候補(A),-
        数字候補文字ならびの二(R1,R2),!.
数字候補文字ならび([A,'.',B|R1],[A,'.',B|R2]) :-
        数値文字候補(A),
        数値文字候補(B),
        数字候補文字ならびの二(R1,R2),!.
数字候補文字ならび([A|R1],[A|R2]) :-
        数値文字候補(A),
        数字候補文字ならび(R1,R2).
数字候補文字ならび([A|R1],[]) :-
        \+(数値文字候補(A)).

数字候補文字ならびの二([],[]).
数字候補文字ならびの二([A|R1],[A|R2]) :-
        数値文字候補(A),
        数字候補文字ならびの二(R1,R2).
数字候補文字ならびの二([A|R1],[]) :-
        \+(数値文字候補(A)).

数値候補文字まで読み飛ばし(['+',A|R1],['+',A|R1]) :-
        数値文字候補(A),!.
数値候補文字まで読み飛ばし(['-',A|R1],['-',A|R1]) :-
        数値文字候補(A),!.
数値候補文字まで読み飛ばし([A|R1],[A|R1]) :-
        数値文字候補(A),!.
数値候補文字まで読み飛ばし([_|R1],R2) :-
        数値候補文字まで読み飛ばし(R1,R2).

数値文字候補(A) :-
        member(A,['0','1','2','3','4','5','6','7','8','9']).