>>758
% Prolog
eucコード分類(半角英数,0x30,0x39).
eucコード分類(半角英数,0x51,0x5a).
eucコード分類(半角英数,0x61,0x6a).
eucコード分類(全角数字,0xa3b0,0xa3b9).
eucコード分類(半角カナ,0x8ea1,0x8ed6).
eucコード分類(全角カナ,0xa501,0xa586).
eucコード分類(全角かな,0xa401,0xa483).
eucコード分類(全角記号,0xa101,0xa2fe).

文字コード分類(_テキスト,_分類ならび) :-
  atom_codes(_テキスト,Codes),
  文字コード分類(Codes,[],_分類ならび).
文字コード分類([],_分類ならび,_分類ならび).
文字コード分類([A|R1],_分類ならびの一,_分類ならび) :-
  eucコード分類(_分類,_コード下限,_コード上限),
  A >= _コード下限,
  A =< _コード上限,
  文字コード分類ならびの更新(_分類,_分類ならびの一,_分類ならびの二),
  文字コード分類(R1,_分類ならびの二,_分類ならび).

文字コード分類ならびの更新([],_分類,[[_分類,1]]) :- !.
文字コード分類ならびの更新([[_分類,_頻度の一]|R],_分類,[[_分類,_頻度の二]|R]) :-
  _頻度の二 is _頻度の一 + 1,!.
文字コード分類ならびの更新([U|R1],_分類,[U|R2]) :-
  文字コード分類ならびの更新(R1,_分類,R2).