- 370 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 22:14:25 ]
- >>333
% Prolog '与えられた二つのリストに含まれる文字の並びを辞書式順序(※)で比較し、第一のリストの方が小さければ負の値、大きければ正の値、等しければ0を返す'(_文字リスト_1,_文字リスト_2,_返り値) :- compare(_文字リスト_1,_文字リスト_2,_返り値). compare([],[],0). compare([],[_|_],-1). compare([_|_],[],1). compare([A|_],[B|_],-1) :- char_code(A,CodeA),CodeA >= 65,CodeA =< 90, char_code(B,CodeB),CodeB >= 97,CodeB =< 122, CodeC is CodeB - 32, CodeC >= CodeA,!. compare([A|_],[B|_],1) :- char_code(A,CodeA),CodeA >= 97,CodeA =< 122, char_code(B,CodeB),CodeB >= 65,CodeB =< 90, CodeC is CodeA - 32, CodeC =< CodeA,!. compare([A|_],[B|_],-1) :- A @< B,!. compare([A|_],[B|_],1) :- A @> B,!. compare([A|R1],[A|R2],X) :- compare(R1,R2,X).
|

|