10/06/24 19:06:29
>>63
% Prolog
'ファイルkadai.txt に記述された数行の数値を表す文字列を読み込み、整数に変更して数値として表示する' :-
get_lines('kadai.txt',_行ならび),
append(_,[_行文字列|R],_行ならび),
整数に変更して(_行文字列,_整数),
write_formatted('%t\n',[_整数]),
R = [].
整数に変更して(_行文字列,_整数) :-
sub_atom(_行文字列,0,1,_,'0'),
atom_codes(_行文字列,Codes),
reverse(Codes,Codes2),
反転した基数コードならびから10進数を得る(8,Codes2,_整数),!.
整数に変更して(_行文字列,_整数) :-
atom_codes(_行文字列,Codes),
reverse(Codes,Codes2),
反転した基数コードならびから10進数を得る(10,Codes2,_整数),!.
反転した基数コードならびから10進数を得る(_,[],0) :- !.
反転した基数コードならびから10進数を得る(_基数,[C|R],M) :-
\+((C >=48,C =< 57)),
反転した基数コードならびから10進数を得る(_基数,R,M),!.
反転した基数コードならびから10進数を得る(_基数,[C|R],M) :-
M0 is C - 48,
反転した基数コードならびから10進数を得る(_基数,R,M2),
M is M2 * _基数 + M0.