Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
77
Task/Number-names/Erlang/number-names.erl
Normal file
77
Task/Number-names/Erlang/number-names.erl
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
-module(nr2eng).
|
||||
-import(lists, [foreach/2, seq/2, append/2]).
|
||||
-import(string, [strip/3, str/2]).
|
||||
-export([start/0]).
|
||||
|
||||
sym(1) -> "one";
|
||||
sym(2) -> "two";
|
||||
sym(3) -> "three";
|
||||
sym(4) -> "four";
|
||||
sym(5) -> "five";
|
||||
sym(6) -> "six";
|
||||
sym(7) -> "seven";
|
||||
sym(8) -> "eight";
|
||||
sym(9) -> "nine";
|
||||
sym(10) -> "ten";
|
||||
sym(11) -> "eleven";
|
||||
sym(12) -> "twelve";
|
||||
sym(13) -> "thirteen";
|
||||
sym(20) -> "twenty";
|
||||
sym(30) -> "thirty";
|
||||
sym(40) -> "forty";
|
||||
sym(50) -> "fifty";
|
||||
sym(100) -> "hundred";
|
||||
sym(1000) -> "thousand";
|
||||
sym(1000*1000) -> "million";
|
||||
sym(1000*1000*1000) -> "billion";
|
||||
sym(_) -> "".
|
||||
|
||||
next(1000) -> 100;
|
||||
next(100) -> 10;
|
||||
next(10) -> 1;
|
||||
next(X) -> X div 1000.
|
||||
|
||||
concat(PRE, "") ->
|
||||
PRE;
|
||||
concat(PRE, POST) ->
|
||||
PRE++" "++POST.
|
||||
concat("", _, POST) ->
|
||||
POST;
|
||||
concat(PRE, SYM, "") ->
|
||||
PRE++" "++SYM;
|
||||
concat(PRE, SYM, POST) ->
|
||||
PRE++" "++SYM++" "++POST.
|
||||
|
||||
nr2eng(0, _) ->
|
||||
"";
|
||||
nr2eng(NR, 1) ->
|
||||
sym(NR);
|
||||
nr2eng(NR, 10) when NR =< 20 ->
|
||||
case sym(NR) of
|
||||
"" -> strip(sym(NR-10), right, $t) ++ "teen";
|
||||
_ -> sym(NR)
|
||||
end;
|
||||
nr2eng(NR, 10) ->
|
||||
concat(
|
||||
case sym((NR div 10)*10) of
|
||||
"" -> strip(sym(NR div 10), right, $t) ++ "ty";
|
||||
_ -> sym((NR div 10)*10)
|
||||
end,
|
||||
nr2eng(NR rem 10, 1));
|
||||
nr2eng(NR, B) ->
|
||||
PRE = nr2eng(NR div B, next(B)),
|
||||
POST = nr2eng(NR rem B, next(B)),
|
||||
AND = str(POST, "and"),
|
||||
COMMA = if
|
||||
POST == "" -> "";
|
||||
AND == 0 -> " and";
|
||||
B >= 1000 -> ",";
|
||||
true -> ""
|
||||
end,
|
||||
concat(PRE, sym(B)++COMMA, POST).
|
||||
|
||||
start() ->
|
||||
lists:foreach(
|
||||
fun (X) -> io:fwrite("~p ~p ~n", [X, nr2eng(X, 1000000000)])
|
||||
end,
|
||||
append(seq(1, 2000), [123123, 43234234])).
|
||||
Loading…
Add table
Add a link
Reference in a new issue