one line solution :)
#!perl -nl
@d=qw(z o tw th fo fi si se ei n te el);%h=qw(tho 3 m 6 b 9);for(split/\s/){$r+=$s*"1e$h{$1}",$s=0,next if/\b(tho|m|b)/;$s*=100,next if/\bh/;$f=1;$q=$_;$e=grep{$f&&($q=~/^$_/?$f=0:1)}@d;$e*=10 if/ty\b/;$e+=10 if/(een|lve)\b/;$s+=$e if$e>=0;}$r+=$s if$e>=0;1 while$r=~s/(\d+)(\d{3})/$1,$2/g;print$r;
|
first shot (third place ;-)
#!perl -nl
@d=qw(z o tw th fo fi si se ei n te el);
%h=qw(tho 3 m 6 b 9);
for(split/\s/) {
$r+=$s*"1e$h{$1}",$s=0,next if/\b(tho|m|b)/;
$s*=100,next if /\bh/;
$f=1;$q=$_;
$e = grep{$f&&($q=~/^$_/?$f=0:1)}@d;
$e*=10 if/ty\b/;
$e+=10 if/(een|lve)\b/;
$s+=$e if $e>=0;
}
$r+=$s if $e>=0;
1 while $r=~s/(\d+)(\d{3})/$1,$2/g;
print $r;
|