Strtol

Score: 197.37 (pass)

Detect "hundred" more directly, thus the variable used to save the index variable does not need to be cleared.

#!perl -pl
map{for$.(o,tw,th,fo,fi,'si|m',se,ei,'n|b',te,el){$~=$-if$-++,/^$./}(/y/?$~.=0:/een|lv/?$~+=10:!/d|ll/)?$^+=$~:/^h/?$^*=100:($:+=$^*10**$~,$^=0);$-=0}split;$_=$:+$^;1while s/(\d+)(\d{3})/$1,$2/

Score: 199.37 (pass)

Changed encoding so it does not need to be mod 12.

if you submit again in the next 30 seconds, you are banned from the competition :)

#!perl -pl
map{for$.(o,tw,th,fo,fi,'si|m',se,ei,'n|b',te,el,h){$~=$-if$-++,/^$./}(/y/?$~.=0:/een|lv/?$~+=10:!/d|ll/)?$^+=$~:$~>9?$^*=100:($:+=$^*10**$~,$^=0);$-=0}split;$_=$:+$^;1while s/(\d+)(\d{3})/$1,$2/

Score: 201.37 (pass)

Optimized regexp to check for six or million.

5 in 30 minutes. I don't expect this on day 5.

#!perl -pl
map{for$.(o,tw,th,fo,fi,'si|m',se,ei,'n|b',te,el,h){$~=$-%12if$-++,/^$./}(/y/?$~.=0:/een|lv/?$~+=10:!/d|ll/)?$^+=$~:!$~?$^*=100:($:+=$^*10**$~,$^=0);$-=0}split;$_=$:+$^;1while s/(\d+)(\d{3})/$1,$2/

Score: 202.37 (pass)

Changed encoding so thousand, million, and billion are mapped to 3, 6, and 9.

#!perl -pl
map{for$.(o,tw,th,fo,fi,'[sm]i',se,ei,'n|b',te,el,h){$~=$-%12if$-++,/^$./}(/y/?$~.=0:/een|lv/?$~+=10:!/d|ll/)?$^+=$~:!$~?$^*=100:($:+=$^*10**$~,$^=0);$-=0}split;$_=$:+$^;1while s/(\d+)(\d{3})/$1,$2/

Score: 204.39 (pass)

Replaced multiplication by 10**(# of zeros) with '000'x# of multiples of thousand.

three submissions in 10 minutes, gaining 4 characters!

#!perl -pl
map{for$.(o,tw,th,fo,fi,si,se,ei,n,te,el,h,tho,mi,b){$~=$-%12if$-++,/^$./}(/y/?$~.=0:/een|lv/?$~+=10:!/d|ll/)?$^+=$~:!$~?$^*=100:($:+=$^.'000'x$~,$^=0);$-=0}split;$_=$:+$^;1while s/(\d+)(\d{3})/$1,$2/

Score: 206.38 (pass)

Removed extra "e" from regexp to detect numbers in the teens.

that 't' was a funny looking 'e'

#!perl -pl
map{for$.(o,tw,th,fo,fi,si,se,ei,n,te,el,h,tho,mi,b){$~=$-%12if$-++,/^$./}(/y/?$~.=0:/een|lv/?$~+=10:!/d|ll/)?$^+=$~:!$~?$^*=100:($:+=$^*10**($~*3),$^=0);$-=0}split;$_=$:+$^;1while s/(\d+)(\d{3})/$1,$2/

Score: 207.39 (pass)

Rearranged encoding so "thousand", "million", and "billion" will map to 1, 2, and 3, to simplify converting to a number.

#!perl -pl
map{for$.(o,tw,th,fo,fi,si,se,ei,n,te,el,h,tho,mi,b){$~=$-%12if$-++,/^$./}(/y/?$~.=0:/teen|lv/?$~+=10:!/d|ll/)?$^+=$~:!$~?$^*=100:($:+=$^*10**($~*3),$^=0);$-=0}split;$_=$:+$^;1while s/(\d+)(\d{3})/$1,$2/

Score: 208.38 (pass)

Removing alphanumerics to improve tiebreaker score

#!perl -pl
map{for$.(o,tw,th,fo,fi,si,se,ei,n,te,el,h,p,mi,b){$~=$-%10if$-++,/^$./}(/y/?$~.=0:/te?en|el/?$~+=10:!/d|l/)?$^+=$~:$~<3?$^*=100:($:+=$^*10**($~*3-6),$^=0);$-=0}split;$_=$:+$^;1while s/(\d+)(\d{3})/$1,$2/

Score: 208.47 (pass)

Removed extraneous () around else clause for last ?:

#!perl -pl
map{for$i(o,tw,th,fo,fi,si,se,ei,n,te,el,h,p,mi,b){$a=$j%10if$j++,/^$i/}(/y/?$a.=0:/te?en|el/?$a+=10:!/d|l/)?$b+=$a:$a<3?$b*=100:($c+=$b*10**($a*3-6),$b=0);$j=0}split;$_=$c+$b;1while s/(\d+)(\d{3})/$1,$2/

Score: 210.46 (pass)

Combining first nested ?: operator with the second one. The second if grouping is true if not "hundred", "thousand", "million", or "billion", so it can be combined with the first if grouping, which checks for "ten", "teen", and "y". Combining the checks allows the check for "million" and "billion" to be simplified to a check for "l", since the only other number with "l" is eleven, which has already been screened out.

all that for a 1 character improvement! :)

#!perl -pl
map{for$i(o,tw,th,fo,fi,si,se,ei,n,te,el,h,p,mi,b){$a=$j%10if$j++,/^$i/}(/y/?$a.=0:/te?en|el/?$a+=10:!/d|l/)?$b+=$a:($a<3?$b*=100:($c+=$b*10**($a*3-6),$b=0));$j=0}split;$_=$c+$b;1while s/(\d+)(\d{3})/$1,$2/

Score: 211.47 (pass)

Replacing *=10 with .=0

#!perl -pl
map{for$i(o,tw,th,fo,fi,si,se,ei,n,te,el,h,p,mi,b){$a=$j%10if$j++,/^$i/}/y/?$a.=0:/te?en|el/?$a+=10:0;!/d|ll/?$b+=$a:($a<3?$b*=100:($c+=$b*10**($a*3-6),$b=0));$j=0}split;$_=$c+$b;1while s/(\d+)(\d{3})/$1,$2/

Score: 212.47 (pass)

#!perl -pl
map{for$i(o,tw,th,fo,fi,si,se,ei,n,te,el,h,p,mi,b){$a=$j%10if$j++,/^$i/}/y/?$a*=10:/te?en|el/?$a+=10:0;!/d|ll/?$b+=$a:($a<3?$b*=100:($c+=$b*10**($a*3-6),$b=0));$j=0}split;$_=$c+$b;1while s/(\d+)(\d{3})/$1,$2/

Score: 217.47 (pass)

#!perl -pl
@t=(o,tw,th,fo,fi,si,se,ei,n,te,el,h,p,mi,b);map{for$i(0..14){$a=$i%10+1if/^$t[$i]/}/y/?$a*=10:/een|el/?$a+=10:0;!/d|ll/?$b+=$a:($a<3?$b*=100:($c+=$b*10**($a*3-6),$b=0))}split;$_=$c+$b;1while s/(\d+)(\d{3})/$1,$2/

Score: 220.48 (pass)

#!perl -pl
@t=(z,o,tw,th,fo,fi,si,se,ei,n,te,el,h,p,mi,b);map{for$i(0..15){$a=$i%10if/^$t[$i]/}$a*=10if/y/;$a+=10if/te?en|el/;!/d|on$/?$b+=$a:($a<3?$b*=100:($c+=$b*10**($a*3-6),$b=0))}split;$_=$c+$b;1while s/(\d+)(\d{3})/$1,$2/