<?php
function evalRPN($input) {
$_GET['a']=$input;
$v=$_GET['a'];
while(preg_match('~(.*?)(-?[\d.]+) +(-?[\d.]+) +([*/+-])(.*)~',$v,$m))
$v=$m[1].($m[4]=="+"?$m[2]+$m[3]:($m[4]=="-"?$m[2]-$m[3]:($m[4]=="*"?$m[2]*$m[3]:$m[2]/$m[3]))).$m[5];
return $v;
}
function evalRPN2($input) {
$_GET['a']=$input;
$v=$_GET['a'];
do{$v=preg_replace_callback(
'~(-?[\d.]+) +(-?[\d.]+) +([*/+-])~',
fn($m)=>($m[3]=="+"?$m[1]+$m[2]:($m[3]=="-"?$m[1]-$m[2]:($m[3]=="*"?$m[1]*$m[2]:$m[1]/$m[2]))),
$v,9,$c
);}while($c);
return $v;
}
function evalRPN3($input) {
$_GET['a']=$input;
foreach(preg_split('~ +~', $_GET['a'])as$v){
if(floatval($v))$s[]=$v;else{[$e,$d]=array_splice($s, -2);$s[]=$v=="+"?$e+$d:($v=="-"?$e-$d:($v=="*"?$e*$d:$e/$d));}
}
return $s[0];
}
echo evalRPN('-4 5 +') , "\n"; // output 1
echo evalRPN('5 2 /') , "\n"; // output 2.5
echo evalRPN('5 2.5 /') , "\n"; // output 2
echo evalRPN('5 1 2 + 4 * 3 - +') , "\n"; // output 14
echo evalRPN('4 2 5 * + 1 3 2 * + /') , "\n"; // output 2
echo evalRPN2('-4 5 +') , "\n"; // output 1
echo evalRPN2('5 2 /') , "\n"; // output 2.5
echo evalRPN2('5 2.5 /') , "\n"; // output 2
echo evalRPN2('5 1 2 + 4 * 3 - +') , "\n"; // output 14
echo evalRPN2('4 2 5 * + 1 3 2 * + /') , "\n"; // output 2
echo evalRPN3('-4 5 +') , "\n"; // output 1
echo evalRPN3('5 2 /') , "\n"; // output 2.5
echo evalRPN3('5 2.5 /') , "\n"; // output 2
echo evalRPN3('5 1 2 + 4 * 3 - +') , "\n"; // output 14
echo evalRPN3('4 2 5 * + 1 3 2 * + /') , "\n"; // output 2
- Output for 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- 1
2.5
2
14
2
1
2.5
2
14
2
1
2.5
2
14
2
- Output for 7.3.0 - 7.3.33
- Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ')' in /in/tl3l9 on line 14
Process exited with code 255. - Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.33
- Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ')' in /in/tl3l9 on line 14
Process exited with code 255.
preferences:
166.62 ms | 401 KiB | 202 Q