-module(d). -export([m/0]). -define(A(X),lists:nth(X-$0,string:tokens("ein zwei drei vier fuenf sechs sieben acht neun zehn elf zwoelf"," "))). -define(B(X),lists:nth(X-$1,string:tokens("zwanzig dreissig vierzig fuenfzig sechzig siebzig achzig neunzig"," "))). m()->io:put_chars(m(io:get_line([]))). m("0")->"null";m(X)->n(X). n([A,B,C,D])->[?A(A),"tausend"|n([B,C,D])];n([$0,B,C])->n([B,C]);n([A,B,C])->[?A(A),"hundert"|n([B,C])];n([$0,B])->n([B]);n([$1,B])->if B<$3->?A(B+10);B>0->[?A(B),?A($:)]end;n([A,B])->[if B>$0->[?A(B),"und"];B<$1->[]end,?B(A)];n("0")->[];n("1")->"eins";n([A])->?A(A).
Note that non-ascii characters in the above source code will be escaped (such as \x9f).