#!perl -p
y/ //d;sub t{$_=pop;for$+('*/','+-'){1while s/(\S)([$+])(-?(\d+| .)*)/$1 $3 $2/}$_}1while s/\(([^()]+)\)/t$1/e;t$_
|
#!perl -lp
s/\s//g;sub t{$_=pop;for$+('*/','+-'){1while s/(\S)([$+])(-?(\d+| .)*)/$1 $3 $2/}$_}1while s/\(([^()]+)\)/t$1/e;t$_
|
Tie breaker optimization
#!perl -lp
s/\s//g;$-=/\(/,s!\({$-}([^()]+)\){$-}!$_=$1;for$+('*/','+-'){1while s/(\S)([$+])(-?(\d+| .)*)/$1 $3 $2/}$_!ewhile/\S[^\w ]/
|
#!perl -lp
s/\s//g;$%=/\(/,s!\({$%}([^()]+)\){$%}!$_=$1;for$o('*/','+-'){1while s#(\S)([$o])(-?(\d+| .)*)#$1 $3 $2#}$_!ewhile/\S[^\w ]/
|
#!perl -lp
s/\s//g;$%=/\(/,s!\({$%}([^()]+)\){$%}!$_=$1;for$o('*/','+-'){1while s#(\S)([$o])(-?\d+( .|\d+)*)#$1 $3 $2#}$_!ewhile/\S[^\w ]/
|
#!perl -lp
s/\s//g;$%=/\(/,s!\({$%}([^()]+)\){$%}!$_=$1;for$o('*/','+-'){1while s#(\S)([$o])(-?\d+( .|\d+)*)#$1 $3 $2#}$_!ewhile/(\d|[^\w ])[^\w ]/
|
Test 45 is taking ages in the machines of two referees. It seems this program does not satisfy the time constraint stated in the rules.
#!perl -lp
s/\s//g;$%=/\(/,s!\(?([^()]+)\){$%}!$_=$1;for$o('*/','+-'){1while s#([^SO])([$o])(-?[S\d]+(O.|S\d+)*)#$1S$3O$2#}$_!ewhile/(\d|\W)\W/;y/SO/ /
|
#!perl -lp
s/\s//g;$%=/\(/,s!\({$%}([^()]+)\){$%}!$_=$1;for$o('*/','+-'){1while s#([^SO])([$o])(-?\d+(O.|S\d+)*)#$1S$3O$2#}$_!ewhile/(\d|\W)\W/;y/SO/ /
|
#!perl -lp
s/\s//g;$%=/\(/,s!\(?([^()]+)\){$%}!$_=$1;for$o('*/','+-'){1while s#(-?\d+)([$o])(-?\w+)#"$1S$3So".ord$2#e}$_!ewhile/\d\W/;y/S/ /;s/o(\d+)/chr$1/eg
|
#!perl -lp
s/\s//g;$q=/\(/?'':'?',s!\($q([^()]+)\)$q!$_=$1;for$o('*/','+-'){1while s#(-?\d+)([$o])(-?\w+)#"$1S$3So".ord$2#e}$_!ewhile/\d\W/;y/S/ /;s/o(\d+)/chr$1/eg
|
#!perl -lp
$_=join' ',/\d+|\S/g;s#(^|[^)\d] )- #$1-#g;sub z{$_=pop;for$o('*/','+-'){1while s!(\S+) ([$o]) (\S+)!"$1s$3s$2"!e}$_}1while s#\( ([^(]+?) \)#z$1#e;$_=z$_;y!s! !
|
#!perl -lp
$_=join' ',/\d+|\S/g;$q=/\(/?1:0,s#(\( ){$q}([^()]+)( \)){$q}#$_=$2;s!(^| \D )- !$1-!g;for$o('*/','+-'){1while s!(\S+) ([$o]) (\S+)!$1S$3S$2!}$_#ewhile/ /;y!S! !
|
#!perl -lp
@a=/\d+|\S/g;$_="@a";s#(^|[(/*+-] )- #$1-#g;sub z{$_=pop;for$o('*/','+-'){1while s!(\S+) ([$o]) (\S+)!"$1s$3s$2"!e}$_}1while s#\( ([^(]+?) \)#z$1#e;$_=z$_;y!s! !
|
#!perl -lp
$_=join' ',/\d+|\S/g;s#(^|[^)\d] )- #$1-#g;$q=/\(/?1:0,s#(\( ){$q}([^()]+)( \)){$q}#$t=$2;for('*/','+-'){1while$t=~s!(\S+) ([$_]) (\S+)!$1S$3S$2!}$t#ewhile/ /;y!S! !
|
At last...
#!perl -lp
s/\s//g;sub z{$_=pop;s#(^|\W)-#$1_#g;for$o('*/','+-'){1while s!(\w+)([$o])(\w+)!$r=$2;$r=~y|*/+-|tdpm|;"$1s$3s$r"!e}$_}1while s#\(([^(]+?)\)#z$1#e;$_=z$_;y!mpdts_!-+/* -!
|