10/01/16 10:07:07
>>256
% Prolog (その一)
標準入力から読み込んだテキストファイルを辞書順に整列して標準出力する :-
標準的整列ルール(32,127,_標準的整列ルール),
例外的整列ルール(_例外的整列ルール),
get_lines(user_input,Lines),
concat_atom(Lines,' ',S),
split(S,[' '],_語彙ならび),
辞書順整列(_語彙ならび,_標準的整列ルール,_例外的整列ルール,[],_辞書順に整列された語彙ならび),
語彙ならびを標準出力する(_語彙ならび).
語彙ならびを標準出力する([]).
語彙ならびを標準出力する([_語彙|R]) :-
write_formatted('%t\n',[_語彙]),
語彙ならびを標準出力する(R).
標準的整列ルール(M,N,[]) :- M > N,!.
標準的整列ルール(M,N,[A|R]) :-
\+((M >=97,M =< 122)),
char_code(A,M),
M2 is M + 1,
標準的整列ルール(M2,N,R),!.
標準的整列ルール(M,N,[A,B|R]) :-
M >= 65,M =< 90,
M32 is M + 32,
char_code(A,M),char_code(B,M32),
M2 is M + 1,
標準的整列ルール(M2,N,R),!.