« OperaはComet+JSONP出来ない | Main | Erlangの+Aオプション »

Sunday, June 03, 2007

Erlangで数字→ローマ数字変換

勉強会に参加していないので宿題の内容は知らないのだけども,すぐに書けそうだったので...
大きな数を与えると遅そうだけど,たぶんそんな使い方はしないんじゃないかなぁと思って,手抜き.

-module(i2r).
-export([i2r/1]).

i2r(N) ->
  i2r(N, "").

i2r(N, S) when N >= 1000 ->
  i2r(N - 1000, S ++ "M");
i2r(N, S) when N >= 500 ->
  i2r(N - 500, S ++ "D");
i2r(N, S) when N >= 100 ->
  i2r(N - 100, S ++ "C");
i2r(N, S) when N >= 50 ->
  i2r(N - 50, S ++ "L");
i2r(N, S) when N >= 10 ->
  i2r(N - 10, S ++ "X");
i2r(N, S) when N >= 5 ->
  i2r(N - 5, S ++ "V");
i2r(N, S) when N >= 1 ->
  i2r(N - 1, S ++ "I");
i2r(_N, S) ->
  S.

|

« OperaはComet+JSONP出来ない | Main | Erlangの+Aオプション »

Comments

The comments to this entry are closed.

TrackBack


Listed below are links to weblogs that reference Erlangで数字→ローマ数字変換:

« OperaはComet+JSONP出来ない | Main | Erlangの+Aオプション »