« 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

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


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

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